微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Reactjs中调用组件?

如何解决如何在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中。

解决方法

您的代码有几个问题。

  1. 如果要基于活动的Tab显示组件,则必须维护state变量。我看到您已经设置了初始状态activeTab : "add",但是尝试在按钮内渲染<Add />组件。这就是为什么它不能按预期工作的原因。您必须单独渲染它。

  2. 您的handleClick函数应该可以执行某些操作。不退货。所以在这里,如果您将组件退回开关内将无法使用。您可以在此处更改状态。

  3. 您可以使用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 举报,一经查实,本站将立刻删除。