在本机挂钩中更新嵌套数据状态

Update nested data state in react native hooks

我确实有一个react native状态下的数据集。我想更新一些嵌套数据,并将一些数据附加到对象键列表中。例如:

const [data, setData] = useState({
    set1: {current_page: 1, last_page: 2, data: [data1, data2, data3, data4]},
    set2: {
      current_page: 1,
      last_page: 4,
      data: [data11, data22, data33, data44],
    },
    set3: {
      current_page: 1,
      last_page: 5,
      data: [data12, data22, data32, data42],
    },
    set4: {
      current_page: 1,
      last_page: 2,
      data: [data11, data21, data31, data41],
    },
  });

这是我的示例数据类型。 稍后我只想从状态更新单个数据键值对,例如 set2 键我想设置 current_page = 3 和 last_page =5 并将其他一些数据附加到数据来自另一个列表数据的字段。我不想影响该州的任何其他数据。我想更新到:

let dataToAppend = [data55, data66, data77];
  const [data, setData] = useState({
    set1: {
      current_page: 1,
      last_page: 2,
      data: [data1, data2, data3, data4],
    },
    set2: {
      current_page: 3,
      last_page: 5,
      data: [data11, data22, data33, data44, data55, data66, data77],
    },
    set3: {
      current_page: 1,
      last_page: 5,
      data: [data12, data22, data32, data42],
    },
    set4: {
      current_page: 1,
      last_page: 2,
      data: [data11, data21, data31, data41],
    },
  });

您可以使用 Spread operator:

setData({ ...data, set2: {...set2, current_page: 3, last_page: 5, data: [...set2.data, ...newItems]} })

您总是可以将 data 复制到一个局部变量中,修改您需要的属性并使用新值设置 data。类似于:

let result = Object.assign({}, data); //<-- deep copy of data
result.set2.current_page = 17;
result.set2.last_page = 23;
result.set2.data.push(data43);
setData(result);