gpt4 book ai didi

Reactjs - 必须返回有效的 React 元素(或 null)

转载 作者:行者123 更新时间:2023-12-03 13:39:28 26 4
gpt4 key购买 nike

我有以下简单代码:

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'));

我得到了这个错误:

"A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object."

最佳答案

这里,问题出在这一行。

return
(
<li>
{this.props.email}
</li>
);

您已将起始括号放在下一行,因此当您的代码转换为纯 JavaScript 代码时,它将如下所示。

render: function () {
return; // A semicolon has been inserted.
(React.createElement("li", null, this.props.email)); // unreachable code
}

您可以看到 JavaScript 在解释代码时插入了一个分号,因此渲染函数没有返回任何值,并且您收到此错误。

为了避免这种情况,您需要将起始括号放在 return 语句之后,这样 JavaScript 就不会插入分号,直到找到匹配的结束括号。像这样,

return (
<li>
{this.props.email}
</li>
);

现在,如果您查看生成的代码,它将看起来像这样

render: function () {
return (React.createElement("li", null, this.props.email));
}

另外,更改

return
(
<ul>{userNodes}</ul>
);

return (
<ul>{userNodes}</ul>
);

这里是工作 fiddle 。 JSFiddle

我还修复了警告,

Each child in an array or iterator should have a unique "key" prop.

通过在 User 组件中传递 key 。

关于Reactjs - 必须返回有效的 React 元素(或 null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41898972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com