我很想知道这两种改变状态的方式( comments 和非 comments )有什么不同?当调度不正常时,第一个问题会导致问题.为什么会这样呢?

export const correctiveSlice = createSlice({
  name: "corrective",
  initialState: initialCorrectiveState,
  reducers: {
    correctContent: (state, action: PayloadAction<CorrectiveState>) => {

      // state = {
      //   item: {
      //     id: action.payload.item.id,
      //     text: action.payload.item.text,
      //   },
      //   edit: action.payload.edit,
      // };
      state.item = action.payload.item;
      state.edit = action.payload.edit;
    },
  },
}); 

我使用的是传统的待办事项列表应用程序,但我使用的是Redux-Toolkit/Reaction-Redux库,而不是上下文API.当我try 使用第一种方法来改变状态时,它没有改变.

推荐答案

如果将state赋给一个具有state = {...}的全新对象,那么您就是在not修改传递的state.相反,您需要将新的局部变量重新赋值给新值,即更改引用.底层方法只能访问它们传递给Reducer方法的state个,该方法保持不变.实际上,这不是ReduxReact的问题,而是JavaScript的基本行为--或者任何不支持显式指针的语言.

要修改底层变量,您必须修改它的属性,就像您对state.item = action.payload.item等所做的那样,或者像描述here那样合并它.不过,只有在使用redux-toolkit的情况下才允许修改状态!

或者,您可以使用类似于return action.payload的内容来return新状态,而不是修改传递的state.在这种情况下,退回的项目将取代以前的state.这是Redux版本的功能.

Reactjs相关问答推荐

react-hook-form问题:为什么getValues不返回大多数当前值?

在REACT-RUTER-DOMV6中使用通用页面包装组件有问题吗?

MUiv5和TSS-Reaction SSR问题:无法可靠地处理样式定义.CSSprops 中的ArrowFunctionExpression

子路径上未定义useMatches句柄

useState导致对函数的无休止调用

React组件未出现

UseEffect 似乎不适用于页面的首次渲染

强制 useEffect 仅运行一次

无法使用react-hook-form和react-places-autocomplete在字段中输入值

为什么 useEffect 的初始化对于加载 localStorage 不起作用?

React-router-dom的链接不改变路由(ReactRouter6)

如何在 ChartJS 中创建此图表?在 NEXTjs 和 TSX 中

为什么这个 React 组件会导致无限渲染?

Recharts 笛卡尔网格 - 垂直线和水平线的不同样式

Redux Toolkit 配置,是否适用于全栈应用程序?

条件渲染元素的测试不起作用

如何在同一路由路径上重新渲染组件(链接,V6)reactjs

如何在 React 中使用 debounce hooks

如何在 React 中单击鼠标的位置动态添加 div?

渲染的钩子比预期的少.这可能是由 React Hooks 中意外的提前返回语句引起的