使用 array.find 为 redux return 引用或值更新状态?

Update state using array.find for redux return reference or value?

我在看官网的教程

我知道状态是不可变的,在reducer中的操作实际上是创建一个新的状态副本,修改它并替换原来的。

我在想: 是不是应该删除数组中的条目(exisitngPost)并推入一个新条目?因为 state.find() 应该 return 按值而不是引用。我弄错了吗?还是跟 reducer 逻辑有关?

tutorial link

const postsSlice = createSlice({
  name: 'posts',
  initialState,
  reducers: {
    postAdded(state, action) {
      state.push(action.payload)
    },
    postUpdated(state, action) {
      const { id, title, content } = action.payload
      // where i find confused<<<<<<<<<<<<<<<<<<<
      const existingPost = state.find(post => post.id === id)
      if (existingPost) {
        existingPost.title = title
        existingPost.content = content
      }
    }
  }
})

export const { postAdded, postUpdated } = postsSlice.actions

export default postsSlice.reducer

state.find returns 状态中的对象 - 如果它不是原始对象,则该对象将是一个引用。因此,此时在 RTK immer reducer 中,您可以对其进行修改,并且在 reducer 运行 之后,将为您创建一个包含应用更改的新的不可变副本,而不是修改原始副本。