Reactjs 反应错误消息丢失

Reactjs 反应错误消息丢失,reactjs,Reactjs,我有一个非常简单的React案例,其中render函数中有一个错误,当状态更新为包含错误值时,不会记录任何内容 错误在于,在状态更新为包含非数组的“stuff”值之后,这意味着对“stuff”值调用join(“,”)应该失败,但不会发生任何事情。React仅保留先前在getInitialState函数中设置的数据 我在这里是不是做错了什么来释放错误信息,还是这就是React的工作原理 var someComp = React.createClass({ getInitialState:

我有一个非常简单的React案例,其中render函数中有一个错误,当状态更新为包含错误值时,不会记录任何内容

错误在于,在状态更新为包含非数组的“stuff”值之后,这意味着对“stuff”值调用join(“,”)应该失败,但不会发生任何事情。React仅保留先前在getInitialState函数中设置的数据

我在这里是不是做错了什么来释放错误信息,还是这就是React的工作原理

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。