javascript - Die von der Aktion angeforderten Daten werden an den Reduzierer übergeben. Warum werden die Daten nach der Ausführung des Reduzierers nicht dem Speicher zugeordnet?
黄舟
黄舟 2017-06-12 09:21:45
0
1
665
// 这是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))
            })
    }
}

Sowohl Aktion als auch Reduzierung können normal ausgeführt werden. Ich habe den Speicher im Router überwacht, aber der Speicher hat sich nie geändert. Habe ich irgendwo etwas falsch geschrieben?
Bitte hilft mir jemand. Ich stecke schon einen ganzen Tag in diesem Problem fest und weiß nicht, was das Problem ist

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

Antworte allen(1)
習慣沉默

Object.assign 属于浅拷贝,只会处理第一层
state = {

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

}

你的action.data的返回值是不是一个对象?

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage