搜尋

首頁  >  問答  >  主體

javascript - action 請求來的資料給了reducer,reducer執行後資料沒有對應到store上是為什麼?

// 这是reducer
export const requestUserInfo = (state = {}, action) => {
    switch(action.type) {
        case 'HEADER_RECEIVE_USERINFO':
            console.log(action.data)// 有值
            return Object.assign({}, state, action.data)
            break
        default:
            return state
    }
}
// 这是action
function receiveUserInfo (data) {
    return {
        type: 'HEADER_RECEIVE_USERINFO',
        data
    }
}


export function requestUserInfo () {
    return dispatch => {
        return axios.post('/user/getScores', qs.stringify({
                token: token,
                uid: uid
            }))
            .then(res => {
                if(res.data.status !== 200) {
                    message.error(res.data.message)
                    return state
                }

                return { ...res.data.attachment}
            })
            .then(data => {
                dispatch(receiveUserInfo(data))
            })
    }
}

action 和 reducer 都能正常執行,我在router中監聽了store,但store一直都沒變過。是我哪裡寫錯了嗎?
快來人救我,卡在這個問題一整天了,完全不知道哪裡出的問題

黄舟黄舟2782 天前656

全部回覆(1)我來回復

  • 習慣沉默

    習慣沉默2017-06-12 09:23:45

    Object.assign 屬於淺拷貝,只會處理第一層
    state = {

    a: name,
    b: {
        child: {}    // 无论child怎么改变都不会触发state的change, 因为b的引用没有变
    }

    }

    你的action.data的回傳值是不是一個物件?

    回覆
    0
  • 取消回覆