【问题标题】:Object destructuring returning nested object对象解构返回嵌套对象
【发布时间】:2019-08-11 14:08:06
【问题描述】:

我的减速器有以下初始状态:

export function videos(
  state = { videos: [], search: { videos: [], term: "" } },
  action
)... 

在我的减速器中,我寻找持久化状态并使用一些持久化道具创建我的新 videos 数组:

case "VIDEOS_SUCCESS": {
  const { data } = action;
  let videos = [];
  let questions = [];

  data.map(item => {
    let persistedVideo =
      state.videos.find(video => video.id === item.id) || null;
    let bookMarked = persistedVideo ? persistedVideo.bookMarked : false;
    let completed = persistedVideo ? persistedVideo.completed : false;
    ....

    videos.push(newVideo);
  });

  return { ...state, videos: videos };
}

当我返回我的新状态时,videos 数组嵌套在 video 属性中。

{videos:{
    search: {videos: Array(0), term: ""},
     videos: (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
}}

我怎样才能让我的状态看起来像:

{
   videos: (10) [],
   search: {videos: [], term: ''}
}

【问题讨论】:

  • return { ...state, ...videos }; 试试看。
  • “我怎样才能让我的状态看起来像” 那有什么不同(除了顺序)? (10) 是什么意思?
  • @zynkn - OP 似乎不太可能希望在其状态对象上命名为 "0""1" 等的属性。
  • @zynkn 视频是一个视频对象数组,所以我很确定他不想将其传播到该州。
  • @T.J.Crowder, 10 可能是数组的长度。

标签: javascript redux react-redux


【解决方案1】:

Stores 总是根据它们的 reducer 划分状态,所以如果你调用 store.getState() 你应该期望返回的状态是表单

{
  reducer1: { /* state of reducer1 */ },
  reducer2: { /* state of reducer2 */ },
  ...
}

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 2021-11-16
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多