обработка изменений в модели / коллекции магистрали в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};
}
какие преимущества и недостатки есть у разных подходов? Есть ли способ сделать это,Реактивный путь?