我有以下简单的代码:
var data = [{ email: "bob@gmail.com" },{ email: "toto@gmail.com" }];
var User = React.createClass({
render: function ()
{
return
(
<li>
{this.props.email}
</li>
);
}});
var UserList = React.createClass({
render: function ()
{
var userNodes = this.props.data.map(function (user)
{
console.log(user.email);
return
(
<User email={user.email} ></User>
);
});
return
(
<ul>{userNodes}</ul>
);
}});
ReactDOM.render(<UserList data={data} />, document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
"必须返回一个有效的React元素(或null).您可能已经返回了undefined,一个数组或一些其他无效对象."
Har*_*dha 19
在这里,问题出在这一行.
return
(
<li>
{this.props.email}
</li>
);
Run Code Online (Sandbox Code Playgroud)
您已将起始括号放在下一行,因此当您的代码转换为纯JavaScript代码时,它将看起来像这样.
render: function () {
return; // A semicolon has been inserted.
(React.createElement("li", null, this.props.email)); // unreachable code
}
Run Code Online (Sandbox Code Playgroud)
您可以看到在解释代码时Javascript已插入分号,因此渲染函数不会返回任何值,并且您收到此错误.
要避免这种情况,您需要在return语句之后放置起始括号,以便Javascript在找到匹配的结束括号之前不会插入分号.像这样,
return (
<li>
{this.props.email}
</li>
);
Run Code Online (Sandbox Code Playgroud)
现在,如果您查看生成的代码,它将看起来像这样
render: function () {
return (React.createElement("li", null, this.props.email));
}
Run Code Online (Sandbox Code Playgroud)
另外,改变
return
(
<ul>{userNodes}</ul>
);
Run Code Online (Sandbox Code Playgroud)
至
return (
<ul>{userNodes}</ul>
);
Run Code Online (Sandbox Code Playgroud)
在这里,是工作小提琴.的jsfiddle
我也修好了警告,
数组或迭代器中的每个子节点都应该具有唯一的"键"支柱.
通过在User组件中传递键.
| 归档时间: |
|
| 查看次数: |
12387 次 |
| 最近记录: |