我正在尝试在没有JSX的情况下使用React.js组件并收到以下警告:
Warning: Something is calling a React component directly. Use a factory or JSX instead. See: http://fb.me/react-legacyfactory
我访问过链接,但是建议的createFactory解决方案没有帮助我:/
createFactory
app.js
var React = require('react/addons'); var TagsInput = React.createFactory(require('./tagsinput')); // no luck var TagsComponent = React.createClass({ displayName: "TagsComponent", saveTags: function () { console.log('tags: ', this.refs.tags.getTags().join(', ')); }, render: function () { return ( React.createElement("div", null, React.createElement(TagsInput, {ref: "tags", tags: ["tag1", "tag2"]}), React.createElement("button", {onClick: this.saveTags}, "Save") ) ); } }); React.render(React.createElement(TagsComponent, null), document.getElementById('tags'));
tagsinput.js
https://raw.githubusercontent.com/olahol/react-tagsinput/master/react- tagsinput.js
我不知道这是什么问题?
React.createClass(spec)返回一个 组件 。
React.createClass(spec)
React.createElement(component, props, ...children)创建一个 元素 。
React.createElement(component, props, ...children)
React.createFactory(component)返回 工厂 函数,可用于创建 element 。
React.createFactory(component)
React.createFactory(a)(b, c, d)与相同React.createElement(a, b, c, d)。
React.createFactory(a)(b, c, d)
React.createElement(a, b, c, d)
直接调用 组件 (如)时会收到警告component()。如果要像函数一样调用它,请使用createFactory
component()
var factory = React.createFactory(component); var element = factory(props, ...children);
或使用createElement:
var element = React.createElement(component, props, ...children);
在0.13中,这将给出错误而不是警告:
var element = component(props, ...children);
也正因为React.DOM会消失,你应该创建DOM 元素 创建以同样的方式 组成 的基于 要素
编辑:看起来像React.DOM暂时停留。
var div = React.createFactory('div'); var element = div(props, ...children); // or var element = React.createElement('div', props, ...children);
粗体用来表示一致的术语。 ...children表示任意数量的子参数
...children