redux动作,带箭头功能的调度对象

时间:2017-12-01 12:46:10

标签: javascript reactjs redux

我遇到了以下代码

const ERROR_MSG = 'ERROR_MSG'

function errorMsg(msg){
    return { msg, type:ERROR_MSG }
}

export function register({user,pwd,type}){

    return dispatch=>{
        axios.post('/user/register', {user,pwd,type})
            .then(res=>{
                if(res.status!==200){
                    dispatch(errorMsg(res.data.msg))
                }
            })
    }
}

它的调度接收函数作为参数,并且param返回一些东西。我对它不太满意,为什么需要创造额外的功能?如果errorMsg是全局的,或者它将具有冗余函数,这是有意义的。

是否可以使用箭头功能然后在回调中直接调度动作对象?

dispatch(()=>{res.data.msg, type:ERROR_MSG})

2 个答案:

答案 0 :(得分:2)

你可以注意到你的箭头功能没有返回任何东西:

dispatch(()=>{res.data.msg, type:ERROR_MSG})  

使用显式返回:

dispatch(()=>{return {res.data.msg, type:ERROR_MSG}})  

或者用表达式包装它:

dispatch(()=> ({res.data.msg, type:ERROR_MSG}))  

或者直接将对象传递给dispatch:

dispatch({msg: res.data.msg, type:ERROR_MSG})

答案 1 :(得分:0)

是可以使用箭头功能直接发送,但实际上并不需要它,而不是在dispatch中调用额外的函数,你可以用一个对象调度动作

return dispatch=>{
    axios.post('/user/register', {user,pwd,type})
        .then(res=>{
            if(res.status!==200){
                dispatch({ msg: res.data.msg, type:ERROR_MSG })
            }
        })
}