2017-05-11 16 views
0

問題概述什麼樣的數據類型可以傳遞給redux-thunk動作?

我使用Redux的形式,並且它包裝我compoent,並提供了作爲屬性變化()是用於改變形式的結合的功能。我想在actionCreator中調用它。

問題

我想我可能只是把它傳遞給我的actionCreator的thunk,但似乎該值在行動派遣剝離。

詳細

所以我試過,而不是發送時限的行動變化我想,而不是一個指針發送到我叫act.setFMEPATH其他actionCreators之一,但也不能正常工作。

在下面的第一張圖中,我顯示了在發生redux動作之前變量的狀態。正如您從手錶中看到的那樣,act.setFMEPath顯然已被定義。

在第二張圖片中,您可以看到輸入時的動作狀態。 defaultPath是定義的(它的作用域是棧上的閉包),但是是storeAct。因爲參數storeAct不可見,所以我很難編碼STORE.dispatch(Act.setFMEPath(filePath [0]),但是我想要它STORE.dispatch(storeAct(filePath [0]))

我應該第一個參數的情況下結合到調度()和轉彎storeAct()成綁定功能(但要注意它是一個箭頭的功能,這樣就不會去上班)。

致電前的狀態:

enter image description here

pickFile動作創建者的

狀態條目

enter image description here

+0

我不認爲你已經提供了足夠的回答你的問題。 pickFolder是一個函數,所以你可以傳遞給它任何你可以正常傳遞的東西。如果它在pickFolder中是未定義的,那是因爲它在調用者中是未定義的。 –

+0

@無線電 - 你是對的。我將在主要評論中增加更多內容。但基本上,調試器顯示調用程序調用dispatch時,Act.setSourcePath綁定到函數。但是當我輸入接收者*(PickFolder動作)時,目標參數是未定義的。但是defaultPath仍然是一個字符串。這是一個還原錯誤? –

+0

@ Radio-我填寫了更多細節,但我也改變了問題的標題,沒有意識到會創建一個新的筆記。查看結果在:https://stackoverflow.com/questions/43895229/redux-dispatchtoprops-dispatch-loses-context-and-arguments-when-getting-to-act –

回答

0

好像還沒有計劃JavaScript對象的快樂。如上所示,當我試圖派發一個具有綁定函數調用的actionCreator作爲參數時,它在actionCreator創建時缺少。

我也嘗試創建一個將函數句柄(綁定函數)放入存儲區的reducer,並且它未被存儲,並且先前的值被刪除(佔位符)。

我對@ Radio的說法感到困惑,因爲我所看到的是,redux不喜歡那些不是純javascript對象的東西(要麼作爲調度調用的參數,要麼作爲reducer的值放置在商店中)。

+0

既不商店也不調度器從對象中剝離函數。不建議將商店功能參考存儲在商店狀態中,但不會阻止您這樣做。你是否存儲函數調用的結果而不是函數指針?在沒有看到有問題的代碼的情況下,纔會想到這一點。 –

+0

@ Radio - 如果你不介意,看看上面更新的問題,我想你會看到我所看到的,傳遞給dispatch()的綁定函數被剝離。當我嘗試使用Reducer在商店中放置綁定函數時,我也看到了同樣的情況。我做這件醜事的唯一原因是爲了解決redux-form的限制,它提供change()作爲組件的本地綁定函數,我希望它可以在全局範圍內使用。 –

+0

這是,因爲JavaScript引擎不會保留名稱,因爲內部函數中沒有任何地方引用storeAct。如果你確實在某個地方引用了它,那麼這個引擎會保留這個名稱,它可能會有所不同。 –

0

它調用pickFolder的代碼(即Act.pickFolder(Act.setSourcePath, defaultPath))根本與redux-thunk無關。由於redux-thunk的工作方式,在redux-thunk將會發揮作用之前將對其進行評估。

redux-thunk檢查是否調度值爲函數,並且,如果它是,redux-thunkdispatchgetStateextraArgument PARAMS調用它。請check its source code,它非常小巧簡單。

基本上它意味着什麼無線電說:如果它在pickFolder中是未定義的,這是因爲它在呼叫者中是未定義的。另外,我們在pickFolder中沒有看到destination的任何用法,因此請檢查是否有錯別字。

+0

我擴大了細節,你可以看到它:https://stackoverflow.com/questions/43895229/redux-dispatchtoprops-dispatch-loses-context-and-arguments-when-getting-to-act –

相關問題