我对React真的很陌生,想显示2个选项卡,第一个选项卡单击应显示我拥有的画布,第二个选项卡应显示下拉菜单。我现在在页面中有这三个。
我的页面看起来像这样-2个标签,一个下拉菜单和一个画布。
如何在第一个选项卡上单击并绑定画布div,以在第二个选项卡上单击以显示画布。
修改后的代码:
export class Graph extends Component {
constructor(props) {
super(props);
this.state = {
Vdata: null,
Edata: null,
iconData : iconsData,
currentIndex: 0
}
this._tabClick = this._tabClick.bind(this);
this.MainGraphComponent = this.MainGraphComponent.bind(this);
this.CustomizedGraphComponent = this.CustomizedGraphComponent.bind(this);
}
CustomizedGraphComponent(){
return(
<div className={style.container} style={{ width: '100%', paddingTop:20}}>
<DropdownButton>
{
//elements
}
</DropdownButton>
</div>
)
}
MainGraphComponent(){
<div ref={(n) => {
this.graphContainer = n;
return;
}} id="container"
style={{height: '100%', width: '100%'}}
/>
}
_tabClick(clickedIndex) {
const {currentIndex} = this.state.currentIndex;
if(clickedIndex !== currentIndex) {
this.setState({currentIndex: clickedIndex })
}
}
render (){
return (
<div className={style.container} style={{height: '100%', width: '100%'}}>
<Tabs
tabs={[
{
name: 'Main Graph',
title: 'Main Graph',
component: <this.MainGraphComponent/>
},
{
name: 'Customized Graph',
title: 'Customized Graph',
component:<this.CustomizedGraphComponent/>
}
]}
onTabClick={this._tabClick}
/>
</div>
);
}
答案 0 :(得分:1)
我这样做的方法是根据选项卡的索引呈现所需的组件。该索引保存在状态中,并且每次单击选项卡时都会更改。 示例代码
<Tabs
tabs=[
{
name: 'Main Graph',
title: 'Main Graph',
component: <YourGraphComponent/>
},
{
name: 'Customized Graph',
title: 'Customized Graph',
component: <YourCustomizedGraphComponent/>
}
]
/*
Assuming Tabs is a component, no need to specify a click handler unless
you want to add some custom handling.
onTabClick={this._onSelect}
*/
/>
然后在您的标签页组件中
this.state={
currentIndex: 0 //or get the default from the parent
}
_tabClick(clickedIndex) {
const {currentIndex} = this.state;
if(clickedIndex !== currentIndex) {
this.setState({currentIndex: clickedIndex });
}
}
render() {
return (<div>
{/*Basic code to render the tabs and attach click handlers to it based on index*/}
{this.props.tabs.map((tab, index) => {
return (<div onClick={this._tabClick.bind(index)}>
tab.label
</div>);
})}
{/*component fetched from the tabs array based on the current index*/}
{this.props.tabs[this.state.currentIndex].component}
</div>);
}
}
答案 1 :(得分:0)
您考虑使用状态吗?就像下拉菜单的显示一样,可以将其设置为初始状态下没有的状态值,然后在选项卡上单击setState更改该值。
答案 2 :(得分:0)
过去我使用制表符时,我使用过React Tabs。旋转起来很容易,并且可以让您更改一些功能以满足自己的需求,并根据需要对其进行样式设置。默认情况下,它具有选项卡切换功能,但是您可以对其进行自定义,以使用本地状态来处理切换,以实现更多控制。有关操作方法的所有说明都在链接中。