如何解决没有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);
// or
var element = React.createElement('div', props, ...children);
粗体用来表示一致的术语。 ...children
表示任意数量的子参数
解决方法
我正在尝试在没有JSX的情况下使用React.js组件并收到以下警告:
Warning: Something is calling a React component directly. Use a factory or
JSX instead. See: http://fb.me/react-legacyfactory
我访问过链接,但是建议的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
我不知道这是什么问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。