2017-12-01 18 views
2

とディスパッチオブジェクト私は、コード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としての機能、およびPARAMリターン何かを受け取るの下に出会いました。私はそれに慣れていないので、なぜ余分な機能を作成する必要がありますか? errorMsgがグローバルである場合は意味があり、そうでない場合は冗長な機能を持ちます。

私はarrow関数を使用してコールバックでアクションオブジェクトをすぐにディスパッチできますか?

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

答えて

2

でアクションを派遣するだけで可能性があり、その代わりdispatchに余分な関数を呼び出すのは、しかし実際には必要ではないその矢印の機能をすぐに派遣することが可能ですあなたの矢印機能は何も返されていないことに注意してください:

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

電子明示的な戻り:

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

や式でそれをラップ:

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

それとも派遣に直接オブジェクトを渡す:

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

または私は単にこれのように発送することができますか? 'dispatch({msg:res.data.msg、タイプ:ERROR_MSG})' –

+0

はい、私はちょうど答えに –

+2

を追加しました。私は何も返されていない矢印関数で間違っていたところでOPを表示します。 –

0

はいあなたがオブジェクト

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

は、この必要Reduxの-サンクのですか? –

+0

はい、アクション作成者は普通のオブジェクトを返す必要がありますが、redux-thunkのようなカスタムミドルウェアを使用すると、非同期アクションクリエイターも含めることができます –

+0

デフォルトでreduxが非同期アクションを処理しないのはなぜですか?リュクスサックは必見ですね、うーん。 –