我有下面的状态和减缩器,但它没有推入新的数组对象。
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
})
照片未被推送,但被覆盖
这是排列运算符[…]。spread运算符可用于获取现有数组并向其中添加另一个元素,同时仍保留原始数组。
例子:
case actionTypes.PHOTOS_UPDATE:
return [
...state,
Object.assign({}, {
photos:action.data.photos,
photosTeamId:action.data.photosTeamId,
photosProjectId:action.data.photosProjectId
})
];
case actionTypes.PHOTOS_UPDATE:
return {
...state,
photos: state.photos.concat(action.data.photos),
photosTeamId: action.data.photosTeamId,
photosProjectId: action.data.photosProjectId
};
下面是使用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的属性。每个模式都有自己的。我的代码如下所示: 我在多个精简器中都有,但是如果没