我有一個是通過一個「用戶」的終極版道具,看起來像這樣的組件:終極版沒有更新的組件
user: {
user: {
photos: []
},
userIsFetching: false,
userIsFetchError: false
}
當「照片」被更新,陣營不會重新呈現。我可以在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;
}
}
感謝。
你很可能用別的東西來覆蓋'user'屬性。 –
同意。雖然我無法立即發現問題,但是嵌套對象的正確性可能會非常棘手,並且可能會有微妙的方式來改變不應該改變的內容。你可能會考慮像https://github.com/gaearon/normalizr這樣的東西來平整你的商店。另外,當響應回來時,你是否撤消了你的標誌? – acjay
標誌是爲原始用戶提取的。當我與網頁互動時(例如觸發onClick),頁面會更新爲正確的照片。 –