0
私はFLuxまたはReduxを使用していないReactJSを使用しています。私は孫のコンポーネントが祖父母コンポーネントと通信(読み取り/更新)できるようにしたい。Reactjの親コンポーネントは子コンポーネントの子と通信します
export default class App extends React.Component {
static propTypes = {
children: React.PropTypes.object.isRequired
};
constructor(props) {
super(props);
this.state = {
tabActive: 0,
};
}
setTabActive(item) {
this.setState({
tabActive: item,
});
}
render() {
return (
<div>
<Header tabActive={this.state.tabActive} />
<Content>
{this.props.children}
</ Content>
<Footer />
</div>
);
}
}
子コンポーネントヘッダー:
export default class Header extends React.Component {
render() {
return (
<div>
....
<SettingTabBar tabActive={this.props.tabActive} />
</div>
);
}
}
子コンポーネントの子SettingTabBar:
export default class SettingTabBar extends React.Component {
constructor(props) {
super(props);
this.state = { activeTab: this.props.tabActive };
}
render() {
if (location.pathname.indexOf('setting') > 0) {
return (
<Tabs activeTab={this.state.activeTab} onChange={tabId => this.setState({ activeTab: tabId })} ripple>
<Tab>SETTING</Tab>
<Tab>CHARTS</Tab>
<Tab>HELP</Tab>
</Tabs>
);
}
return null;
}
}
ここ
は、App親コンポーネント
ですOnTagBarコンポーネントが、関数を介してApp/Headerコンポーネントにデータを更新できるようにするにはどうしてもですか?setTabActive() onChange?
あなたは、コンテキストを使用することができますが、それは練習をお勧めしません。 –