首页 > 解决方案 > 为什么在 React setState 函数中使用 prevState?

问题描述

请告诉我使用 prevState 和使用 Array.filter 有什么不同。

// components is an array that has object {key: string, item: {}}
const defaultValue = [
  {
    key: 'a',
    item: {},
  },
  {
    key: 'b',
    item: {},
  },
  {
    key: 'c',
    item: {},
  }
];
const [components, setComponent] =  React.useState(defaultValue);

// using prevState
setComponents(prevState => prevState.filter(item => item.key !== 'b'));

// using Array. filter
setComponents(components.filter(item => item.key !== 'b')))

结果,using Array.filter 工作不正常。我想知道。原因是 Array.filter 返回一个新数组。

请告诉我使用 prevState 和使用 Array.filter 有什么不同

标签: javascriptreactjsstate

解决方案


你的问题来了

setComponents(components.fillter(item => item.key !== 'b')))
                         // ^ typo

尝试这样的事情,

setComponents(components.concat(
  components.filter(item => item.key !== 'b'))
))

推荐阅读