缺少反应错误消息

时间:2014-10-12 19:15:15

标签: reactjs

我有一个非常简单的React情况,我在渲染函数中有一个错误,当状态更新为包含错误值时,没有任何内容被记录。

错误是在状态更新后包含不是数组的'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(", "))]);
                }))
        ])
    }
});

1 个答案:

答案 0 :(得分:1)

根据我使用React的经验,如果您逐步构建内容,它会记录更有用的错误消息。在return语句之前执行R.td({}, person.stuff.join(", "))],然后再使用该结果。如果person.stuff不是数组,那么您会收到更好的错误消息。

更重要的是,为什么你想让React抛出错误?如果它是用于开发目的,则比等待来自React的错误消息更容易检查。否则,在尝试将其作为一个之前,您是否应该检查person.stuff是否为数组