2016-11-22 52 views
2

我有一個使用React和Redux的項目。我有多個React組件,需要使用一種常用的方法,它會從Redux Store中抓取數據,構建請求對象並向服務器發出休息請求。適當反應元件使用情況

我不想寫這樣做的方法不止一次。那麼,這個方法應該是它自己的React組件,還是我應該把它放在一個通用的JavaScript文件中?如果您不渲染任何JSX,我不確定組件的要點。另一方面,如果我將它放在一個通用的JavaScript文件中,是否可以將redux連接到該文件以訪問存儲中的狀態?

在此先感謝。

回答

2

添加redux-thunk中間件可讓您調度功能,然後訪問dispatchgetState()。從那裏你可以做任何你想做的事情,比如使用選擇器函數來提取你需要的狀態,並進行AJAX調用。形實轉換動作創作者可以傳遞給組件的道具,包括他們結合自動調度:

function someThunk() { 
    return (dispatch, getState) => { 
     const state = getState(); 

     // do anything you want here 
    } 
} 

const actions = {doStuffOnClick : someThunk}; 

export default connect(mapState, actions)(MyComponent); 

更多資源:

+0

一致認爲,當我們需要訪問Redux狀態的常用方法時,thunk看起來會起作用。偉大的信息知道。但是,我的同事提醒我,我們可以用這個來渲染JSX。這是'提交'按鈕。所以,我認爲*畢竟這個例子中的組件是有意義的。 – nikotromus

1

它不應該是一個組件,因爲如你所說,它沒有視覺方面。

創建一個新的動作,即可做到這一點,並從您需要的任何地方派發動作。此操作可以檢查商店以查看操作是否已經發生,然後什麼都不做(或刷新)。

使用import {createStore} from 'redux'的模塊創建您的商店。將操作模塊中創建的商店導入並使用store.getState()檢查商店的當前狀態。