Reactjs 反应错误消息丢失
我有一个非常简单的React案例,其中render函数中有一个错误,当状态更新为包含错误值时,不会记录任何内容 错误在于,在状态更新为包含非数组的“stuff”值之后,这意味着对“stuff”值调用join(“,”)应该失败,但不会发生任何事情。React仅保留先前在getInitialState函数中设置的数据 我在这里是不是做错了什么来释放错误信息,还是这就是React的工作原理Reactjs 反应错误消息丢失,reactjs,Reactjs,我有一个非常简单的React案例,其中render函数中有一个错误,当状态更新为包含错误值时,不会记录任何内容 错误在于,在状态更新为包含非数组的“stuff”值之后,这意味着对“stuff”值调用join(“,”)应该失败,但不会发生任何事情。React仅保留先前在getInitialState函数中设置的数据 我在这里是不是做错了什么来释放错误信息,还是这就是React的工作原理 var someComp = React.createClass({ getInitialState:
var someComp = React.createClass({
getInitialState: function () {
return {persons: [
{name: "Jane", stuff: ["a", "b"]},
{name: "Jim", stuff: ["c", "d"]}
]}
},
componentDidMount: function () {
superagent.get('/api/tags')
.end(function (res) {
// The res.body contains a stuff-value that is not an array.
this.setState({persons: res.body});
}.bind(this));
},
render: function () {
return R.table({}, [
R.thead({},
R.tr({}, [
R.th({}, "Name"),
R.th({}, "List of stuff")
])),
R.tbody({},
this.state.persons.map(function (person) {
return R.tr({}, [
R.td({}, person.name),
// If person.stuff is not an array, then no error is logged..!
R.td({}, person.stuff.join(", "))]);
}))
])
}
});
根据我对React的经验,如果您一步一步地构建,它会记录更多有用的错误消息。在return语句之前执行
R.td({},person.stuff.join(“,”))
,然后稍后使用该结果。如果person.stuff
不是一个数组,那么您将得到更好的错误消息
更重要的是,为什么您要对抛出错误做出反应?如果是为了开发目的,有比等待React发出错误消息更容易的检查方法。否则,在尝试将
person.stuff
用作数组之前,您是否应该包含一个检查,以查看它是否是一个数组?您可以在调用setState的位置包含代码吗?您肯定会在那里遇到错误,因此状态很可能没有按照您认为的方式更新。另外,我使用superagent.js for XHR。您应该查看JSX,它会使您的呈现方法更易于阅读:)在我看来,使用JSX与否是一个品味问题。我更喜欢在JavaScript中只保留JavaScript。