为什么在React setState函数中使用prevState?

时间:2020-07-06 09:52:56

标签: javascript reactjs state

请告诉我使用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?有什么区别

1 个答案:

答案 0 :(得分:0)

您的问题在这里

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

尝试这样的事情,

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