为什么React组件不知道骨干集合的变化?

时间:2014-04-22 02:29:21

标签: backbone.js reactjs

我正在学习使用骨干并做出反应。我使用react作为MV *中的V和Model的骨干。 但是有一个问题:我将一个骨干集合传递给一个反应组件,当我向这个集合中添加更多模型时,反应没有更新。 如果我收听集合更改事件并调用react方法:forceUpdate,react会反映更改。 所以我猜想反应并不知道集合对象发生的变化。 如何使用骨干自动更新反应?

1 个答案:

答案 0 :(得分:4)

React没有任何原生方式来收听任何类型的Backbone事件。它完全没有意识到你的Backbone代码。解决这个问题完全取决于您希望如何构建解决方案。

1)您可以在组件初始化时手动将Backbone事件连接到组件的forceUpate():

React.createClass(
{
    componentWillMount: function()
    {
        // For models:
        this.props.model.on("change", this.forceUpdate);

        // For collections:
        this.props.collection.on("change", this.forceUpdate);
        this.props.collection.on("add", this.forceUpdate);
        this.props.collection.on("remove", this.forceUpdate);
        this.props.collection.on("reset", this.forceUpdate);
    }
});

2)您可以编写一个mixin,将Model或Collection属性复制到React组件的状态,并在Model / Collection更改时调用setState:

3)您可以使用现有的Mixin,如React.Backbone:https://github.com/usepropeller/react.backbone