当前位置: 首页 > 知识库问答 >
问题:

React Native redux减速器推动阵列的最佳方式

鲍驰
2023-03-14

我有下面的状态和减缩器,但它没有推入新的数组对象。

const initialState = {
    photos: [],
    selectedPhoto:{},
    photosTeamId:'',
    photosProjectId:''
};

case actionTypes.PHOTOS_UPDATE:
            return Object.assign({}, state, {
                photos:action.data.photos,
                photosTeamId:action.data.photosTeamId,
                photosProjectId:action.data.photosProjectId
            })

照片未被推送,但被覆盖

共有3个答案

侯和惬
2023-03-14

这是排列运算符[…]。spread运算符可用于获取现有数组并向其中添加另一个元素,同时仍保留原始数组。

例子:

case actionTypes.PHOTOS_UPDATE:
  return [
    ...state,
    Object.assign({}, {
      photos:action.data.photos,
      photosTeamId:action.data.photosTeamId,
      photosProjectId:action.data.photosProjectId
    })
  ];
壤驷子安
2023-03-14
case actionTypes.PHOTOS_UPDATE:
  return {
    ...state,
    photos: state.photos.concat(action.data.photos),
    photosTeamId: action.data.photosTeamId,
    photosProjectId: action.data.photosProjectId
  };
林承悦
2023-03-14

下面是使用javascript扩展语法的更简洁的方法

const initialState = {
    photos: [],
    selectedPhoto:{},
    photosTeamId:'',
    photosProjectId:''
};

case actionTypes.PHOTOS_UPDATE:
            return {
                ...state,
                photos: [...state.photos, ...actions.data.photos],
                photosTeamId: action.data.photosTeamId,
                photosProjectId: action.data.photosProjectId
            }
 类似资料:
  • 作为挂钩新手,我正在转换一些具有多个状态属性的旧代码,在搜索如何减少最初设置的useState挂钩数量时,我遇到了这段代码(失去了链接)。以下useReducer钩子代码按预期工作。我想我知道state值是通过setState(dispatch)更新的,我想弄清楚的是reducer的第二个参数是如何使用spread语法在state和newState之间复制值的。我看到的所有示例都使用switch语

  • 我有一个相当复杂的Javascript应用程序,它有一个每秒调用60次的主循环。似乎有很多垃圾回收正在进行中(基于Chrome开发工具中内存时间轴的“锯齿”输出) - 这通常会影响应用程序的性能。 所以,我正在研究减少垃圾收集器必须做的工作量的最佳实践。(我在网上能找到的大部分信息都是关于避免内存泄漏的,这是一个稍微不同的问题——我的内存正在被释放,只是有太多的垃圾回收机制在进行。)我假设这主要归

  • 本文向大家介绍推荐JavaScript实现继承的最佳方式,包括了推荐JavaScript实现继承的最佳方式的使用技巧和注意事项,需要的朋友参考一下    实现JavaScript继承的最简单的方式是call方法(或者apply方法)及原型链方法,但这两种方法都有缺陷,而其混合体就是很好的继承实现方式。下面举例说明:     对于类Animal来说,它有一个字段属性age及函数属性sayAge,sa

  • 我有一系列的动物arr=[‘猫’、‘狗’、‘大象’、‘狮子’、‘老虎’、‘老鼠’] 我想写一个函数remove(['dog','lion']),它可以从arr中删除元素,并返回一个新的数组,什么是最佳解决方案? 例子: arr应改为 注:无突变

  • 以下是您将看到的一些方法的快速描述: > :返回船的边界(一个矩形) :返回表示船边界中心的Vector2d。 :一个,它表示船的速度(每帧添加到位置) :一个新的,当给定一个角度(以弧度为单位)时,将其标准化 :不是线性插值!如果你想看代码,这里是(在类中): 当玩家没有按键时,飞船应该减速。以下是我为此所做的: 然而,现在我意识到我希望它在向目标移动时漂移。我试过这个: 这当然不会真的达到零速

  • 按照我的理解,当一个动作被调用时,所有的减速器都响应。如果action存在于reducer的语句中,则执行action。如果没有,则执行,保留现有状态。 当操作存在于reducer中,但它试图更新的特定属性不存在时,它似乎表现良好,因为没有什么可更新的。 例如,我有一个action creator,用于设置Modals的属性。每个模式都有自己的。我的代码如下所示: 我在多个精简器中都有,但是如果没