javascript - Les données demandées par l'action sont transmises au réducteur. Pourquoi les données ne sont-elles pas mappées au magasin après l'exécution du réducteur ?
黄舟
黄舟 2017-06-12 09:21:45
0
1
638
// 这是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))
            })
    }
}

L'action et le réducteur peuvent être exécutés normalement. J'ai surveillé le magasin dans le routeur, mais le magasin n'a jamais changé. Ai-je écrit quelque chose de mal quelque part ?
Quelqu'un s'il vous plaît, aidez-moi, je suis bloqué sur ce problème depuis une journée entière et je ne sais pas quel est le problème

黄舟
黄舟

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

répondre à tous(1)
習慣沉默

Object.assign est une copie superficielle et ne traitera que la première couche
state = {

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

}

La valeur de retour de votre action.data est-elle un objet ?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal