没有JSX的React.js-“警告:某些东西正在直接调用React组件改用工厂或JSX”

【字号: 日期:2024-04-19浏览:10作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决没有JSX的React.js-“警告:某些东西正在直接调用React组件改用工厂或JSX”?

React.createClass(spec)返回一个 。

React.createElement(component, props, ...children)创建一个 。

React.createFactory(component)返回 函数,可用于创建 。

React.createFactory(a)(b, c, d)与相同React.createElement(a, b, c, d)。

直接调用 (如)时会收到警告component()。如果要像函数一样调用它,请使用createFactory

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);// orvar element = React.createElement(’div’, props, ...children);

粗体用来表示一致的术语。 ...children表示任意数量的子参数

解决方法

我正在尝试在没有JSX的情况下使用React.js组件并收到以下警告:

Warning: Something is calling a React component directly. Use a factory orJSX instead. See: http://fb.me/react-legacyfactory

我访问过链接,但是建议的createFactory解决方案没有帮助我:/

app.js

var React = require(’react/addons’);var TagsInput = React.createFactory(require(’./tagsinput’)); // no luckvar 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

我不知道这是什么问题?

相关文章: