我遇到了以下代码
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})
答案 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 })
}
})
}