React.createElement究竟接受什么作为参数?

时间:2017-09-04 00:59:49

标签: javascript reactjs

docs表示它采用了一种类型,但在下面的两个例子中,它们都有效,第一个例子实际上是一个函数。这不是说文档错了吗?似乎createElement不仅需要一个类型,而且还有一个返回元素的函数。对我来说这感觉很棘手。

var title = function (props) {
  return (
    React.createElement(
      'h1',
      null,
      'title'
    )
  );
};

ReactDOM.render(
  React.createElement(title),
  document.getElementById('app')
);

VS

var title = React.createElement(
  'h1',
  null,
  'title'
)

ReactDOM.render(
  title,
  document.getElementById('app')
);

1 个答案:

答案 0 :(得分:1)

React documentation也在下一行说明了这一点:

  

type参数可以是标记名称字符串(例如'div''span'),也可以是React component类型(类或函数)。

因此,您可以传递字符串作为类型,这会创建divh1等原生元素:

React.createElement('h1', null, 'title');

您还可以将函数作为第一个参数传递,它是一个React组件

var title = function (props) {
  return (
    React.createElement(
      'h1',
      null,
      'title'
    )
  );
};

React.createElement(title);

此处,title 是一个React组件,更具体地说是一个功能组件,因此您可以创建一个具有该类型的元素。