React的createElement(...)如何工作?用于道具的是什么?

时间:2016-10-13 08:11:26

标签: reactjs

我看了this

ReactElement createElement(
  string/ReactClass type,
  [object props],
  [children ...]
)
  

创建并返回给定类型的新ReactElement。类型   参数可以是html标签名称字符串(例如,' div',' span',   等)或ReactClass(通过React.createClass创建)。

这并没有真正向我解释[object props]会发生什么。为什么需要它?它用于什么?

有人可以解释在致电[object props]createElement会发生什么变化吗?它们是如何使用的?它们会用于渲染元素吗?他们以后可以改变吗?它们是可变的还是不可变的?

提问的理由:我正在试图找出how to use scalajs-react。

2 个答案:

答案 0 :(得分:2)

前段时间,丹·阿布拉莫夫在Twitter上发布了此消息:

https://twitter.com/dan_abramov/status/781620845185732608

(我认为是abhirathore2006发布的“反应如何工作 - 实施说明”的开头)。

你可以在这里看到:http://jsbin.com/qiguyibolu/1/edit?js,output

例如,这就是道具发生的事情:

var node = document.createElement(type);
Object.keys(props).forEach(propName => {
    if (propName !== 'children') {
        node.setAttribute(propName, props[propName]);
    }
});

它们最终成为节点属性!所以我真的建议你阅读https://facebook.github.io/react/contributing/implementation-notes.html以深入了解我们何时调用函数传递道具,以及我们如何更新它们。伙计们做了很好的工作,解释了事情是如何运作的。我实际上自己也是这样做的。)

答案 1 :(得分:1)

对于所有想知道反应如何实际起作用的人?结帐以下链接,为反应实施提供潜行峰值

How React Works - implementation notes