javascript - 从其他组件初始化另一个 react 组件

标签 javascript reactjs

我有很多td。单击每个 td 时,我想渲染一个全新的组件。我该怎么做?

Compon1 render 方法如下所示:

<tbody>
       {this.props.comments.map((comment, i) =>
            <tr>
               <td onClick={() => <Comp2 passOnData={comment}}><p>comment.text</p></td>
            </tr>
       )}
</tbody>

我希望当我点击每个 td 时,应该呈现 Comp2,但事实并非如此。

但是它也不会在控制台中抛出任何错误/警告。

由于我是新手,所以我可能会以错误的方式这样做;

最佳答案

您可以使用states -Example ,像这样

var Comment = React.createClass({
  render: function() {
    let comments = this.props.comment.child.map((comment, index) => {
      return <li key={index}>{comment}</li>;
    });

    return <ul>
      { comments }
    </ul>;
  }
});

var Comments = React.createClass({
  getInitialState: function() {
    return {
      comments: this.props.comments
    }
  },

  handleToggle: function (comment) {
    let comments = this.state.comments.map((el) => {
      el.isActive = (el.id === comment.id) ? !el.isActive : el.isActive
      return el;
    });

    this.setState({ comments: comments });
  },

  render: function() {
    let comments = this.state.comments.map((comment, i) => {
      return <tr key={i}>
        <td onClick={ this.handleToggle.bind(this, comment) }>
          <p>{ comment.text }</p>
          { comment.isActive ? <Comment comment={comment} /> : null }
        </td>
      </tr>;
     });

    return <table>
      <tbody>{ comments }</tbody>
    </table>;
  }
});

关于javascript - 从其他组件初始化另一个 react 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33594244/

相关文章:

javascript - 如何替换 REACT.js 中的 refs(antd 表示例)

javascript - React Router 不编码 & 符号,而是对路径参数中的空格进行编码

javascript - 无法访问 actions/api 服务中的 redux 存储(没有 connect() func)

javascript - 在 React JS 中,如何将 `setState` 与嵌套在数组中的对象一起使用?

javascript - 我怎样才能从 IE 中隐藏一部分 javascript

javascript - 如何使用 jquery 删除最后一个元素?

javascript - 如何使用 Typescript 在 React 卡组件中映射本地数组?

javascript - 在没有索引或唯一标识符的情况下 react : How to modify an array-based state,?

javascript - HTML5 是否支持跨窗口消息传递?

javascript - jquery 对话框标题未使用全局变量定义