我正在使用Immutable,我发现当你想要更新不可变数据单元中的多个键时会出现很多问题。
现在我正在执行此操作以实现更新的对象。
state.setIn(["user", "email"], action.payload.user.email)
.setIn(["user", "pass"], action.payload.user.password)
.setIn(["user", "pending"], action.meta.pending)
.setIn(["user", "username"], action.payload.user.name)
.setIn(["user", "charity"], action.payload.user.charityOrganizationId)
.setIn(["user", "avatar"], action.payload.user.avatarElementIds)
.setIn(["user", "isAuthorized"], action.payload.user.isAuthorized);
它看起来并不那么美,我想创建一种方法,让我能够像这样处理它:
dynamicUpdate(immutableData, newDataCollection) {
var res;
for (var key in newDataCollection) {
res = immutableData.setIn(["user", key], newDataCollection[key])
}
return res;
}
var newState = dynamicUpdate(ImmutableState, {
email : "newEmail",
pass : "newPass"
})
有可能吗?或者还有其他方法可以做到这一点吗?
我认为它会导致很大的内存问题,因为每个setIn都会创建一个新的Immutable Map。我读过withMutations,但我不明白它是如何使用的。
感谢您的帮助!