#javascript #reactjs
#javascript #reactjs
Вопрос:
У меня есть панель компонентов.jsx :
render(){
return(
<div className="bar">
<button className="button" onClick={() => this.setState({view: 1})}>1</button>
<button className="button" onClick={() => this.setState({view: 2})}>2</button>
<button className="button" onClick={() => this.setState({view: 3})}>3</button>
<button className="button">Wallet</button>
</div>
И у меня есть еще один компонент, где я хочу получить эти данные :
main.jsx :
render() {
return (
<div className="App">
<div className="header"></div>
<bar></bar>
<View></View>
</div>
);
};
Как проанализировать this.setState({view: 1})
значение для моего View
компонента?
Комментарии:
1. вы должны использовать «Подъем состояния вверх». reactjs.org/docs/lifting-state-up.html
Ответ №1:
Чтобы сделать это, вам нужно поднять свое состояние до main.jsx. Итак, в main.jsx вы создаете состояние {view: 0}
или какое-либо другое значение по умолчанию. Затем вы создаете функцию, которая устанавливает это состояние (вы не можете использовать this.setState
в данном случае), по сути, это оболочка this.setState
. Затем вы передаете эту функцию bar
своему компоненту.
Компонент Bar прикрепляет его к кнопкам вместо () => this.setState({view: 1})
того, что у вас есть.
Из основного компонента вы передаете view
как prop.
Когда пользователь нажимает на кнопку, вызывается функция изменения, функция изменения вызывает setState в главном компоненте. Изменяется состояние основного компонента, и это изменяет реквизит для компонента представления. Компонент просмотра отображает новые данные.
Подробнее об этом можно прочитать здесь — https://reactjs.org/docs/lifting-state-up.html