【问题标题】:how to update nested object with useReducer in React?如何在 React 中使用 useReducer 更新嵌套对象?
【发布时间】:2021-12-30 12:46:38
【问题描述】:

如何使用这个 use reducer 更新 courseName? 错误:“无法在字符串“science”的 courseName 上创建属性。 我假设我没有正确访问它?我一直在使用 useState,但我想学习 useReducer 来处理更复杂的对象。

import React, { useReducer } from "react";

function reducer(state, action) {
  switch (action.type) {
    case "update":
      return { object: (state.object.courseName = "Science") };

    default:
      return state;
  }
}

export default function TestPage() {
  const object = {
    courseName: "Mathematics",
    courseModules: [
      {
        moduleName: "module1",
        isComplete: false,
        lessons: [
          {
            lessonName: "Lesson1",
            isComplete: false,
            progress: 0,
          },
        ],
      },
    ],
  };

  const [state, dispatch] = useReducer(reducer, { object });

  function updateName() {
    dispatch({ type: "update" });
  }

  return (
    <div>
      <h1>{object.courseName}</h1>
      <button onClick={updateName}>submit</button>
    </div>
  );
}

【问题讨论】:

    标签: reactjs object react-hooks use-reducer nested-object


    【解决方案1】:

    您可以传播您的对象并只覆盖一个值。

      switch (action.type) {
        case "update":
          return { ...state, object: { ...state.object, courseName: "Science"}};
        default:
          return state;
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-01
      • 2019-11-02
      • 2023-01-23
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      相关资源
      最近更新 更多