我一直在搞一些代碼,我想我只是意識到了一些愚蠢的東西。在沒有Flux或Redux的情況下在React中使用Immutable.js是一個愚蠢的錯誤。在沒有Flux或Redux的情況下使用Immutable.js
toggleTask(task) {
const found = _.find(this.state.taskList, task => task.name === task);
found.isDone = !found.isCompleted;
const index = _.findIndex(this.state.taskList, task => task.name === task);
const temp = Immutable.fromJS(this.state.taskList);
temp.setIn([index, 'isDone'], found.isDone).toJS();
this.setState({ taskList: temp.toJS() });
}
所以基本上我才意識到有多少傻瓜我是我是在製造一個不可變對象,改變了它使用Immutable.js方法再變回一個數組。它沒用,因爲淺比較應該沒有不可變對象。
shouldComponentUpdate(nextProps) {
return (this.props.name !== nextProps.name || this.props.priority !== nextProps.priority || this.props.isDone !== nextProps.isDone );
}
我一直在使用lodash方法,但由於我單獨比較道具,因爲他們原語(如字符串和布爾值不能immutables反正元),我不認爲這真的事情,即使我沒有使用它也可能會起作用。
toggleTask(task) {
const found = _.find(this.state.taskList, task => task.name === task);
found.isDone = !found.isDone;
this.setState({ taskList: this.state.taskList });
}
所以我說錯了,React中的Immutable.js在沒有Redux或Flux的情況下是無用的嗎?有沒有我不正確的理解?我看過示例,因爲我從未使用過Flux或Redux,所以它們對我來說並不合適。
您沒有正確使用庫...與Flux/Redux無關。 – c0deNinja