Redux未更新组件
Redux not updating a component
我有一个组件,它从Redux传递了一个"用户"道具,看起来像这样:
user: {
user: {
photos: []
},
userIsFetching: false,
userIsFetchError: false
}
当"照片"更新时,React不会重新发送。我可以在Redux日志中看到,"照片"确实会更新。这个问题是因为"照片"嵌套太深吗?
这是减速器:
function deleteUserPhoto(user, id) {
return {
...user,
photos: deletePhoto(user.photos, id)
};
}
function deletePhoto(photos, id) {
return photos.filter(photo =>
photo.id !== id
);
}
export function user(state, action) {
if (typeof state === 'undefined') {
state = {
user: null,
userIsFetching: false,
userIsFetchError: false
}
}
switch (action.type) {
case USER_REQUEST:
return {
...state,
userIsFetching: true
};
case USER_RESPONSE:
return {
...state,
user: action.user
};
case USER_RESPONSE_ERROR:
return {
...state,
userIsFetching: false,
userIsFetchError: true
};
case PHOTO_DELETE:
return {
...state,
user: deleteUserPhoto(state.user, action.id)
};
default:
return state;
}
}
谢谢。
在实际代码中可能不是这样,但从我在代码示例中看到的情况来看:在deletePhoto
方法中,调用filter
应该抛出TypeError,因为photos
在初始状态下是未定义的。
只要返回一个新状态,深度嵌套的属性就没有任何问题。在某些时候,它可能会变得很麻烦,但像ImmutableJS这样的库可以帮助我们管理非常复杂的状态。调用操作后未更新视图是一个常见问题,通常由变异状态引起:http://rackt.org/redux/docs/Troubleshooting.html
相关文章:
- 调度没有'无法立即更新组件
- React js更改状态不会更新组件
- 如何使用JavaScript更新JSP页面的一些组件
- 如何在加载Angular2.RC1子组件时更新它
- ReactJS组件中显示的视频未更新
- 如何创建独立于数组更新的组件列表
- 组件道具更改后更新redux存储
- 如果我不应该在组件WillUpdate中调用setState,如何更新状态(使用ReactJS)
- React 应该组件更新太多的递归
- 在PrimeFaces中的某些组件更新时自动调用javascript
- 反应:不必要的组件更新
- 通过子组件更新父数据
- 余烬子组件通过父组件更新来自查询参数的属性
- 从子组件更新父组件
- 从React组件更新模型/集合
- 通过React Native中的子组件更新父组件
- Angular 2更改检测,ngClass模型由同级组件更新,但模板确实更新了'不要精神抖擞
- 如何从父组件更新子组件的状态
- React - 如何在组件更新后获取真正的 DOM 元素
- 淘汰组件更新未被父视图模型订阅的可观察对象