reactjs – 警告:React.createElement:type不应为null或未定义

前端之家收集整理的这篇文章主要介绍了reactjs – 警告:React.createElement:type不应为null或未定义前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
期望下面的代码附加无序列表及其子 节点到document.body,可以使用<“ul”/>但没有任何孩子,并在控制台中显示错误消息:
  1. React.createElement: type should not be null or undefined. It should be a string (for DOM elements) or a ReactClass (for composite components).

(React.js ver.0.13)

  1. var ListView = React.createClass({
  2. render: function() {
  3. var items = this.props.data.map(function(item) {
  4. return ItemDelegate({key:item.id,data:item.id});
  5. }.bind(this));
  6. return (React.createElement('ul',null,items));
  7. }
  8. });
  9.  
  10. var ItemDelegate = React.createFactory(ListViewChildren);
  11.  
  12. var ListViewChildren = React.createClass({
  13. render: function(){
  14. return (React.createElement('li',{key: this.props.key,data: this.props.data}));
  15. }
  16. });
  17.  
  18. var Wrapper = React.createClass({
  19. render: function() {
  20. return (React.createElement(ListView,{data: [/*some data*/]}));
  21. }
  22. });
  23.  
  24. React.render(React.createElement(Wrapper),document.body);

它是什么类型,在哪里声明类型必须被声明?我想这个概念有一个完全的误会,但在哪里?

警告来自
  1. var ItemDelegate = React.createFactory(ListViewChildren);

ListViewChildren在下面定义,所以React无法创建工厂。

只要移动上面的var ListViewChildren = …并且警告就会消失。

您在ListView类中还有一个问题:您的项目应该是子代而不是道具:

  1. // items as props (2nd arg): won't work,html elements don't have props :)
  2. return (React.createElement('ul',items));
  3. // items as children (3rd arg) should work better
  4. return (React.createElement('ul',items));

完整代码http://jsfiddle.net/Lmb7t9pv/2/

猜你在找的React相关文章