为社区建设略尽绵薄之力!参与 2021 社区问卷调查!
此站点不再更新。了解新站点的更多信息!

警告:有关 React Element 工厂和 JSX

你能到这个页面很可能是因为:你的代码把你的组件直接作为普通的函数来调用。这个方式现在被废弃了:

var MyComponent = require('MyComponent');

function render() {
  return MyComponent({ foo: 'bar' });  // 警告
}

JSX

React 组件现在不再能像这样直接被调用。取而代之的,你可以使用 JSX

var React = require('react');
var MyComponent = require('MyComponent');

function render() {
  return <MyComponent foo="bar" />;
}

不用 JSX

如果你不希望、或者是不能使用 JSX,那么你需要把你的组件包装成工厂函数然后再调用它:

var React = require('react');
var MyComponent = React.createFactory(require('MyComponent'));

function render() {
  return MyComponent({ foo: 'bar' });
}

当你有一大堆现存的函数调用的时候,这样做是一个简单的升级方式。

不使用 JSX 的动态组件

如果从动态来源取得组件类,那么就不需要创建立即调用的工厂函数。你可以改用内联的方式创建你的元素:

var React = require('react');

function render(MyComponent) {
  return React.createElement(MyComponent, { foo: 'bar' });
}

深入

查阅更多关于为什么我们做出这个变动。

Is this page useful?编辑此页面