簡體   English   中英

redux 中的操作是否需要調度?

[英]Is dispatch needed in an action in redux?

我已經學習 redux 一段時間了,我想知道為什么在一個動作中需要調度,我們不能只使用返回,這不是一回事嗎?

  return {
    type: SEARCH_MOVIE,
    payload: text,
  };
};

export const fetchMovies = (text) => (dispatch) => {
  axios
    .get(`https://www.omdbapi.com/?apikey=${APIKey}&s=${text}`)
    .then((response) =>
      dispatch({
        type: FETCH_MOVIES,
        payload: response.data.Search,
      })
    );
};

第一個動作是沒有dispatch並且它正常工作,為什么我們需要在其他function中使用dispatch我們不能只使用return? 我只需要有人向我解釋一下調度在我以后無論如何都會在我的組件或 onClick 中調度的動作中做了什么。為什么我們需要調度它兩次?

這是使用redux-thunk時的 thunk。

使用簡單的基本 Redux 存儲,您只能通過調度操作進行簡單的同步更新。 ...

Thunks 是基本 Redux 副作用邏輯的推薦中間件,包括......簡單的異步邏輯,如 AJAX 請求。

  • action ,在 redux 詞匯表中,只是一個 object,例如
    {type: 'a1'} ,
  • 動作創建者是一個返回動作的 function,例如
    (value) => ({type: 'a1', valye})
  • 動作的重擊是一個 function ,它將調度 function 作為參數並調用它,例如
    (dispatch) => { dispatch({type: 'a1'}) } 使用 redux-thunk 中間件,它可以在任何需要操作的地方使用。
  • 動作創建者的重擊是一個 function (a),它返回一個 function (b),因此 (b) 是在 (a) 的閉包內創建的動作重擊,例如
    (value) => (dispatch) => { dispatch({type: 'a1', value}) }

使用 redux-thunk 時,簡單的action creator和 action creator 的thunk可以互換使用,不需要時不必使用(dispatch) =>... (異步操作或更復雜的操作需要它)具有從一個函數調度的多個動作的邏輯)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM