我一直在搞一些代码,我想我只是意识到了一些愚蠢的东西。在没有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