0

这是我的减速器功能:

export default (posts = [], action) => {
  switch (action.type) {
    case FETCH_ALL:
      return action.payload;
    case LIKE:
      return posts.map((post) => (post._id === action.payload._id ? action.payload : post));
    case CREATE:
      return [...posts, action.payload];
    case UPDATE:
      return posts.map((post) => (post._id === action.payload._id ? action.payload : post));
    case DELETE:
      return posts.filter((post) => post._id !== action.payload);
    default:
      return posts;
  }
};

case CREATE:
      return [...posts, action.payload];

到目前为止,我所了解的是减速器功能获得旧状态和新状态。旧状态由表示'posts',新状态由'action.payload'...表示,现在我不明白的是什么[...posts, action.payload]

那三个点是什么?为什么有方括号?reducer 函数返回什么?这里发生了什么?我是java程序员,这里什么都不懂

4

1 回答 1

1

我明白了一切。

reducer 函数有两个参数(posts = [], action)

第一个是旧状态,第二个参数是包含类型和新数据的操作对象...这个 reducer 函数通过将我的新数据添加到旧状态来返回一个新状态

在这

case CREATE:
      return [...posts, action.payload];

...三个点是扩展语法,可以通过 chellappan 在评论部分给出的以下链接完全理解:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

[]方括号表示一个数组,它是我们的新状态。

于 2021-02-18T06:10:47.677 回答