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 ạ:
    alt text
    alt text
    alt text
    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 cho case FETCHING_START

    newState = Object.assign({}, state, {
     isFetching: true,
     text: ....
    }
    

Log in to reply