如何在redux中向数组添加唯一项

s5a0g9ez  于 2023-03-18  发布在  其他
关注(0)|答案(2)|浏览(105)

我的电影应用程序有一个最喜欢的电影页面,你可以通过点击电影本身的喜欢按钮将电影添加到你最喜欢的页面,我不想一遍又一遍地添加相同的电影我在我的redux reducer中尝试了这个:

const initialState = {
 favouriteMovies: []
}

const favMoviesReducer = (state = initialState, action) => {
  
  switch (action.type) { 

    case actionTypes.GET_FAV_MOVIES:

      if (state.favouritesMovies.indexOf(action.favMovie === -1)) {
        return {
          favouritesMovies: [...state.favouritesMovies, action.favMovie],
          // note: action.favMovie is an object 
        };
      }

      return state;

    default:
      return state;
  }
};

但没成功,有什么建议吗

ggazkfy8

ggazkfy81#

TLDR

indexOf中存在一些排印错误

答案

你的准则是

if (state.favouritesMovies.indexOf(action.favMovie === -1))

但是,据我所知,这是正确的用法indexOf我猜这是错字。

if (state.favouritesMovies.indexOf(action.favMovie) === -1)
ukdjmx9f

ukdjmx9f2#

正如“斯塔克”所写,如果声明不正确,看起来像你。
除了indexOf,您还可以使用includes检查数组中是否存在值:

if (!state.favouritesMovies.includes(action.favMovie))

您可以在这里查看更多信息:includes

相关问题