1 Case khó hiểu trong redux, mong được ace giúp đỡ.
-
Sau bao lâu làm việc với React-native thì quay về React web.và gặp 1 case này.không biết có ace nào gặp chưa là:
"Reducer có update nhưng component ko rerender lúc update mà chỉ rerender khi reducer được restore lại với initialState"
Redux-logger có log ra nhưng prev state lại ko khác gì next state khi update reducer, nhưng lại khác khi reducer được restore lại với initialState.
1 số hình ảnh ạ:
Mong ace giải đáp.mình xin cảm ơn. -
Mình thì không giỏi lắm. nhưng bạn cứ thêm return vào trước newState xem thế nào
-
thanks bạn cơ mà nó cũng nằm trong những hạ sách mình thử rồi :v
-
@Hai-Dang-Vu đầy là reducer của mình hơi cùi nhưng mong hổ trợ 1 phần nào cho bạn
const init = { username: '', permission: null, avatar: null, ten_dang_nhap: null, voteComments: { upVoteComments: [], downVoteComments: [] }, votePosts:{ upVotePosts: [], downVotePosts: [] }, clickThongBao: 0, thongBao:[] } const Login = (state = init, action) => { switch(action.type){ case 'CAP_NHAT_THONG_BAO_DA_DOC_X': console.log(action) var id = action.id_thong_bao; state.thongBao = action.thongBao; return Object.assign({}, state); case 'CAP_NHAT_THONG_BAO_X': // console.log('sdasdsadas', action) state.thongBao = action.thongBao; return Object.assign({}, state); case 'DANG_NHAP_X': state = action.user.user // console.log(action.user) return Object.assign({}, state); case 'UP_OR_DOWN_VOTE_COMMENT_X': state.voteComments = action.comment.voteComments; return Object.assign({}, state); case 'UP_OR_DOWN_VOTE_POST_X': state.votePosts = action.vote.votePosts; return Object.assign({}, state); case 'CHUA_DANG_NHAP': state = { error: "Bạn chưa đăng nhập", code: "1001" } return state; case 'DANG_XUAT_X': // alert('ok'); console.log(action) // if(action.data) // return init; // else return state; // state.voteComments = action.comment.voteComments; return Object.assign({username: null}, init); default: return state; } } export default Login;
-
@Hai-Dang-Vu
Bạn thử chỉnh lại code chocase FETCHING_START
newState = Object.assign({}, state, { isFetching: true, text: .... }