如何解决如何在Reactjs中调用组件?
class App extends React.Component {
constructor() {
super();
this.state = {
activeTab: "add",items: [],}
}
handleClick(activeTab) {
switch (activeTab) {
case 'add': return <Add/>
case 'list': return <List />
case 'pay': return <Pay />
}
}
render() {
return (
<div className="App btn-group">
<Button onClick={this.handleClick.bind(this,'add')}><Add /></Button>
<Button onClick={this.handleClick.bind(this,'list')}><List /></Button>
<Button onClick={this.handleClick.bind(this,'pay')}><Pay /></Button>
</div>
)
}
}
export default App;
我希望通过reactjs中的这段代码,当我单击“添加”按钮时,它会向我显示添加组件,但不幸的是,它不起作用。另一方面,当我执行alert()或console.log()而不返回组件时,在我的开关中;效果不错。
<Add />
列表和付款是组件,我已将其导入到app.js中。
解决方法
您的代码有几个问题。
-
如果要基于活动的Tab显示组件,则必须维护state变量。我看到您已经设置了初始状态
activeTab : "add"
,但是尝试在按钮内渲染<Add />
组件。这就是为什么它不能按预期工作的原因。您必须单独渲染它。 -
您的handleClick函数应该可以执行某些操作。不退货。所以在这里,如果您将组件退回开关内将无法使用。您可以在此处更改状态。
-
您可以使用react的条件渲染功能,根据您的活动标签来渲染所需的组件,如下所示。
这是应该解决我上面提到的问题的完整组件代码
class App extends React.Component {
constructor() {
super();
this.state = {
activeTab: "add",items: [],}
}
handleClick(activeTab) {
this.setState({activeTab})
}
render() {
return (
<div>
<div className="App btn-group">
<Button onClick={this.handleClick.bind(this,'add')}> Add </Button>
<Button onClick={this.handleClick.bind(this,'list')}> List </Button>
<Button onClick={this.handleClick.bind(this,'pay')}> Pay </Button>
</div>
{this.state.activeTab === 'add' && <Add /> }
{this.state.activeTab === 'list' && <List /> }
{this.state.activeTab === 'pay' && <Pay /> }
</div>
)
}
}
export default App;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。