1
palmers 2021-02-27 22:25:24 +08:00
我觉得 你是直接使用了 props 里的 data 你要不试试 使用 state 的 data 然后 请求后存入 state 里 这样 用户添加修改后随便变更 state
|
2
AslanFong OP ```
component.tsx export const NewPlan:FC<NewPlanProps> = (props) => { const { dispatch, editingTemplate, } = props; const handleSubmit = (values: tableRow) => { dispatch model reducer -> setTemplateItem } return ( <table dataSource={editingTemplate} /> ) } const mapStateToProps = (state) => { const editingTemplate = state['probations'].editingTemplate; return { editingTemplate, } } export default connect(mapStateToProps) (NewPlan); ``` ``` model.ts namespace: 'probations' state: { editingTemplate: [] } effects:{**} reducers: { setTemplateItem(state, payload:item) { ****logic create newTemplete return { ...state, editingTemplate: newTemplate } ``` 代码 like ⬆️ @palmers 我使用的是 model state 中的数据,但是这里更新是没有请求的,只是用 reducer 直接更新 state 。 之前都从 effect 再到 reducer 更新 state 的。 |
3
Augi 2021-02-28 00:26:11 +08:00 via iPhone
不可变选择,推测你更新数组或对象内部的数据没有遵循这一原则,你的 newTemplate 还是上一个引用
|
5
Augi 2021-02-28 10:39:26 +08:00 via iPhone
@AslanFong 你不是增加了 增加或者删除一项的操作么,这个操作要重新生成一个数组例如使用 filter 或者 concat 方法,而不是在原有的数组上直接操作。
|
6
Augi 2021-02-28 10:40:30 +08:00 via iPhone
建议看下 react immutable 是什么意思
|
8
AslanFong OP 解决了!深拷贝浅拷贝的问题。菜哭我了。
|
9
azcvcza 2021-03-01 09:50:18 +08:00
给一个新的数组,但是计算的 key 保持原来的
|