2017-02-11 16 views
0

レデューサーにデータを渡すには?レデューサーのアクションからデータを渡す

私はこの

export function loginFailed(error){ 
return { 
    type: types.LOG_IN_ERROR, 
    error 
    } 
} 

様作用を持っていると私はresponse statusに合格しようとしている私のビューコンポーネントに私の減速で、ショーのエラーが発生した後例えば

export function loginUser(credentials) { 
return function(dispatch) { 
    return sessionApi.login(credentials).then(response => { 

      dispatch(loginFailed(response.status)); 

    }).catch(error => { 
     throw(error); 
    }); 
    }; 
} 

をエラーを渡したいです。私は

function mapStateToProps(state, ownProps) { 
return { 
    errorMessage: state.error 
}; 
} 

そして、ちょうどthis.props.errorMessageこのエラーを渡すようにしようとしているときにここで

は私の減速

export const errorMessage = (state = null, action) => { 
switch(action.type){ 
    case LOG_IN_ERROR: 
     return action.errorMessage 
    default: 
     return state; 
    } 
} 

そして、私のビュー です。そして、私は未定義取得:/

あなたの助け

+1

'あなたがしているaction.errorMessage'を返しますそれを返すつもりはない。あなたは常に新しい状態を返すことになっています。例えば'return {... state、error:action.errorMessage} ' –

+0

アクション作成者の中でアクションペイロードを使ってレデューサーにデータを渡す唯一の方法です。 –

答えて

1

ホープあなたはオフに少しだけ、かなり接近しています。アクション作成者にerrorオブジェクトを渡しています。

return { type: types.LOG_IN_ERROR, error } 

だからあなたの減速で、あなたはaction.error、ないaction.errorMessageを経由して、そのオブジェクトにアクセスすることができます。言及した別のユーザーとして

、新しいオブジェクトを返す:

return {...state, error: action.error} 

そして、あなたのmapStateToPropsでは、あなたがそのようなエラーの小道具にアクセスすることができます。

function mapStateToProps(state) { 
    return { 
    errorMessage: state.error 
    }; 
} 
関連する問題