给各位码友拜年!
遇到一点一直以来都处理不好的小问题:
state 结构如下
{
name:'aa',
cfg :[
{ text:'b1',value:'1b',selected:[ 1,2,3]},
{ text:'c1', value:'1c',selected:[ 6,7,8]}
]
}
现有函数handleClick,用于同步cfg中的selected数据 :
handleClick( idx ){
//方案1:我平时的做法
let _cfg = deepCopy( this.state.cfg ); //深拷贝一部分
doSomething( _cfg, idx ); //找到修改部分并修改
this.setState({ cfg : _cfg })
//方案2:参考别人代码
let __cfg = this.state.cfg; //直接取引用
doSomething( __cfg, idx ); //找到修改部分并修改
this.setState({ cfg : __cfg })
}
两种方案结果都一样,不知道选哪一种?如果用immutable 怎么优化?
ps:从论坛上看,直接修改state固然不好,但是state在我的项目中并不复杂,觉得方案2也是可以接受的;
ps:亲们,大家不觉得恨蛋疼吗?我只是修改了selected里面的一个成员,但是却要从根部把整个cfg深拷贝出来,不知道码友没有有没有比较好的方案,前提是不用其他js库
不要为了使用什么库而去使用它,你要了解immutable的作用!如果你的state比较简单,你不需要使用immutable这样的库。如果dosomethong也很简单,使用你的第二段代码更好!