如何在reactjs中动态创建动态组件?

时间:2017-05-15 12:53:40

标签: javascript reactjs

我想知道:

  • 如何动态创建反应组件,例如从一些简单的对象创建反应组件。
  • 动态创作是否也适用于JSX?

  • 反应是否提供了一种在创建后检索组件的方法?例如,其他人的意思是什么?

如果你能为我提供一个极简主义的工作范例,我真的很感谢谢谢!

    var data = [{
      type: 'button',
      props: {
        className: 'button button-blue',
        children: {
          type: 'b',
          props: {
            children: 'OK!'
          }
        }
      }
    },{
      type: 'button',
      props: {
        className: 'button button-blue',
        children: {
          type: 'b',
          props: {
            children: 'OK!'
          }
        }
      }
    }
];

1 个答案:

答案 0 :(得分:1)

您已经列出了一些与React无关的事情清单。 React的重点是声明组件树如何依赖于数据并让框架为您管理它。但是,当你想要做一些hacky的事情时,很少有特殊情况。

  

如何动态创建反应组件,例如从某些组件创建反应组件   简单的对象。

     

动态创建是否也适用于JSX?

您使用React.createElement()。您必须使用它一次来初始化框架。我能想到的其他用例是将诸如模态之类的东西注入或渲染到由非React库生成的DOM或包含在React组件中的组件(基本上是一种将控制权交还给React的方法)。除非你正在做其中一件事或真的知道你想要实现的目标,否则尽量避免这种情况。例如,如果您需要一个有时渲染但有时不渲染的组件,请在JSX中使用条件渲染,如下所示:

render() {
    return (
        <Something>
            <SomethingElse />
            {this.props.someProp ? <SomethingConditional /> : null}
        </Something>
    );
}
  

反应是否提供了一种在创建后检索组件的方法?例如,其他人的意思是什么?

https://facebook.github.io/react/docs/refs-and-the-dom.html

再次尝试使用它来检查DOM或做一些不可能或浪费的事情,比如焦点。不要用它来修改DOM。