обработка изменений в модели / коллекции магистрали вact.js

последние пару недель я работаю с фреймворком Facebook React.js вместе с Backbone, и яЯ до сих пор не совсем уверен, что является наиболее подходящим способом повторного рендеринга компонента React, когда есть изменения в коллекции Backbone, которая была передана как опора.

в настоящее время то, что я делаю, находится вcomponenentWillMount Я настроилchange/add/remove слушатели на коллекции и устанавливают состояние, когда это вызывает:

componentWillMount: function(){
    var myCollection = this.props.myCollection;
    var updateState = function(){
        this.setState({myCollection: myCollection.models});
    }

    myCollections.on("add remove", updateState, this);
    updateState();
}

render: function(){
    var listItems = this.state.myCollection.map(function(item){
        return {item.get("someAttr")};
    });
    return {listItems};
}

Я видел примеры, когда модели клонируются в состояние:

var updateState = function () {
    this.setState({ myCollection: _.clone(this.myCollection.models) });
};

Мы также видели варианты, в которых модель / коллекция в подпорках используется непосредственно при рендеринге вместо использования состояния, а затем вызывается forceUpdate при изменении коллекций / модели, что вызывает повторный рендеринг компонента

componentWillMount: function(){
    var myCollection = this.props.myCollection;
    myCollections.on("add remove", this.forceUpdate, this);
}

render: function(){
    var listItems = this.props.myCollection.map(function(item){
        return {item.get("someAttr")};
    });
    return {listItems};
}

какие преимущества и недостатки есть у разных подходов? Есть ли способ сделать это,Реактивный путь?

Ответы на вопрос(5)

Ваш ответ на вопрос