We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
问题描述
根据「优秀案例和第三方库征集」中推荐方案加入 dva 相关配置后,普通使用 store 没问题,但当在 reducers 的方法中使用诸如
EDIT (state) { const list = [...state.list] // 也尝试过 state.list.concat() 和 .slice() list[0].name = 'change' return { ...state, list } }
均会出现修改 list[0].name 时 state.list 也会作出更改,导致在 return 之前 state 已经变更,视图不会触发更新
list[0].name
而且从 redux-logger 中可以看到 pre state 也跟随更改
尝试 taro cli 的 redux 默认模版和 dva cli web 端均没发现该问题(难道是 dva-core 配置方式不对?😂)
另外使用 JSON.parse(JSON.stringify(state.list)) 这种方式没有问题
复现步骤
demo.zip
下载 demo,安装依赖后小程序中运行
点击界面 edit 按钮
期望行为
解构数组得到的新数组,更改其对象项属性,不会影响 state 中源数组
报错信息
无
系统信息
Taro CLI 1.3.0-beta.4 environment info: System: OS: macOS 10.14.5 Shell: 5.3 - /bin/zsh Binaries: Node: 11.10.0 - /usr/local/bin/node Yarn: 1.13.0 - /usr/local/bin/yarn npm: 6.5.0 - /usr/local/bin/npm npmGlobalPackages: typescript: 2.9.2
补充信息
The text was updated successfully, but these errors were encountered:
欢迎提交 Issue~
如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏
如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。
Good luck and happy coding~
Sorry, something went wrong.
另外 const list = state.list.map(i => i) 也是不可以的 但是 const list = state.list.map(i => ({ ...i })) 可以
const list = state.list.map(i => i)
const list = state.list.map(i => ({ ...i }))
要在nest store数据里做对象属性修改,不宜做浅拷贝。推荐用优秀的工具库lodash做深拷贝; import cloneDeep from 'lodash/cloneDeep' const list = [...state.list] 改为 const list = cloneDeep(state.list) 即可解决你的问题; 修复前: 修复后:
import cloneDeep from 'lodash/cloneDeep'
const list = [...state.list]
const list = cloneDeep(state.list)
希望能帮助到你@chantzekin
856fb63
Chen-jj
No branches or pull requests
问题描述
根据「优秀案例和第三方库征集」中推荐方案加入 dva 相关配置后,普通使用 store 没问题,但当在 reducers 的方法中使用诸如
均会出现修改
list[0].name
时 state.list 也会作出更改,导致在 return 之前 state 已经变更,视图不会触发更新而且从 redux-logger 中可以看到 pre state 也跟随更改
尝试 taro cli 的 redux 默认模版和 dva cli web 端均没发现该问题(难道是 dva-core 配置方式不对?😂)
另外使用 JSON.parse(JSON.stringify(state.list)) 这种方式没有问题
复现步骤
demo.zip
下载 demo,安装依赖后小程序中运行
点击界面 edit 按钮
期望行为
解构数组得到的新数组,更改其对象项属性,不会影响 state 中源数组
报错信息
无
系统信息
补充信息
无
The text was updated successfully, but these errors were encountered: