簡體   English   中英

React:如何將組件身份傳遞給Redux狀態

[英]React: how to pass component identity to Redux state

this與使用React.createClass定義的組件一起傳遞給Redux動作創建者是否安全?

我定義了以下減速器:

const unsavedChangesProtectionReducer = handleActions({
    [ENABLE_UNSAVED_CHANGES_PROTECTION]: (unsavedChangesProtection, action) => ({protected: true}),
    [DISABLE_UNSAVED_CHANGES_PROTECTION]: (unsavedChangesProtection, action) => ({protected: false})},
    {protected: false}
)

多個組件可能會設置/取消設置全局state.unsavedChangesProtection.protected標志,並且由於取消設置此標志而引起問題,因為如果某個其他組件在此組件之前設置了該標志,則該組件不應取消設置它。

一種解決方案是檢查標志是否已設置,如果沒有設置,則將其設置,將有關設置標志的組件的信息存儲在組件的內部狀態,如果內部狀態表明該組件已設置了標志,則將其取消設置。 但是,這違反了DRY原則,因為我必須在每個組件中引入完全相同的登錄名。

更通用的解決方案是存儲最后將全局狀態突變為狀態本身的成員的組件身份,以便每個組件都可以從狀態中查看其是否已更改並相應地未設置。 這可能在React中實現嗎,因為每個組件在安裝/卸載時都會重新初始化

當然,在reducer中具有setBy屬性是可行的,並且您還必須為每個組件添加額外的邏輯到componentWillUnmount方法,如果該組件負責設置/ setBy設置,則該組件可能會改變將觸發reset setBy操作的標志首先是標志(您不想保留從dom中刪除的組件的引用,因為它將阻止所有其他組件更改標志)

暫無
暫無

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

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