我真的很陌生,想要显示 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>
);
}
我这样做的方法是根据选项卡的索引呈现所需的组件。此索引以状态保存,每次单击选项卡时都会更改。示例代码
<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>);
}
}
您是否考虑使用状态?就像下拉列表的显示可以设置为初始为无的状态值一样,在选项卡上单击setState以更改值。
当我过去使用选项卡时,我使用过 React Tabs。它真的很容易启动和开始,并且允许您更改某些功能以满足您的需求以及根据需要设置它们的样式。默认情况下,它具有选项卡切换功能,但您可以自定义它以使用本地状态来处理切换以进行更多控制。有关如何执行此操作的所有说明都在链接中。