我建議跟蹤活動選項卡並管理DisplayController組件中的所有API調用。使用下面的結構應該足以讓你開始。數據獲取函數存在於Display組件中,並通過道具中的回調傳遞給其他組件。
var DisplayController = React.createClass({
getInitialState: function(){
return {
active_tab: 0, display_data: [],
tabs: [{name: 'Tab 0', tab_id: 0}, {name: 'Tab 1', tab_id: 1}, {name: 'Tab 2', tab_id: 2}]
};
}
changeTab: function(tab_id){
this.setState({active_tab: tab_id}, apiCall);
}
apiCall: function(){
//make api call based off of this.state.active_tab
//this.setState({display_data: whatever you get back from api})
}
render: function(){
dprops = {
tabs: this.state.tabs.
changeTab: this.changeTab,
active_tab: this.state.active_tab,
display_data: this.state.display_data
};
return (<MainMenu {...dprops}/>);
}
});
var MainMenu = React.createClass({
changeTab: function(tab_id){
this.props.changeTab(tab_id);
},
render: function(){
tabs = this.props.tabs.map(function(tab){
return <Tab onClick={this.changeTab.bind(tab.tab_id)} name={tab.name} key={tab.tab_id}/>
}.bind(this));
return(
<div>
{tabs}
<Display {...this.props} />
</div>
);
}
});
var Tab = React.createClass({
render: function(){
// make your tab component here from this.props.name
}
});
var Display = React.createClass({
render: function(){
// make your display component here using data from this.props
}
});
我想你可以創建一個JavaScript自定義事件來觸發標籤變化,並在顯示組件,該事件 –
反應你能提供一個例子添加監聽? – ApathyBear
請查看https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events –