在选项卡单击时显示内容 - React
Show content on tab click - React
我真的是 React 的新手,想显示 2 个选项卡,第一个选项卡单击应该显示 canvas 我有,第二个选项卡应该显示下拉列表。我现在页面上有所有三个。
我的页面看起来像这样 - 2 个选项卡、一个下拉列表和一个 canvas。
如何绑定 canvas 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>
);
}
您考虑使用状态吗?就像下拉菜单的显示一样,可以将状态值设置为 none,然后在选项卡上单击 setState 来更改值。
当我过去使用制表符时,我使用了 React Tabs。它真的很容易启动并开始运行,并且允许您更改一些功能以满足您的需求以及根据需要设置它们的样式。它默认带有选项卡切换功能,但您可以自定义它以使用本地状态来处理切换以获得更多控制。有关如何操作的所有说明都在 link.
中
我这样做的方法是根据选项卡的索引呈现所需的组件。该索引保存在状态中,每次单击选项卡时都会更改。
示例代码
<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>);
}
}
我真的是 React 的新手,想显示 2 个选项卡,第一个选项卡单击应该显示 canvas 我有,第二个选项卡应该显示下拉列表。我现在页面上有所有三个。
我的页面看起来像这样 - 2 个选项卡、一个下拉列表和一个 canvas。
如何绑定 canvas 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>
);
}
您考虑使用状态吗?就像下拉菜单的显示一样,可以将状态值设置为 none,然后在选项卡上单击 setState 来更改值。
当我过去使用制表符时,我使用了 React Tabs。它真的很容易启动并开始运行,并且允许您更改一些功能以满足您的需求以及根据需要设置它们的样式。它默认带有选项卡切换功能,但您可以自定义它以使用本地状态来处理切换以获得更多控制。有关如何操作的所有说明都在 link.
中我这样做的方法是根据选项卡的索引呈现所需的组件。该索引保存在状态中,每次单击选项卡时都会更改。 示例代码
<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>);
}
}