suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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?

// 这是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

黄舟黄舟2844 Tage vor679

Antworte allen(1)Ich werde antworten

  • 習慣沉默

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

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

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

    }

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

    Antwort
    0
  • StornierenAntwort