簡體   English   中英

REACT REDUX-設計模式

[英]REACT REDUX - design pattern

HTML布局

我有一個如上所述的頁面,我知道這些的最佳反應設計是一個擁有一個商店(如下所示)的大類(應用程序),但是我的問題是我是否將這三個組件划分為三個擁有3個signet商店的不同類, 是可以在商店之間進行溝通嗎????因為我想讓我的HTML像

<div id="Name "></div>
<div id="Age "></div>
<div id="Form "></div>

instead of one     <div id="content"></div>

var App = React.createClass({  
    render() {  
        return (  
            <div>  
                <Name />  
                <Age />  
                <Form />  
            </div>  
        )  
    }  
});




render(  
    <div>  
        <Provider store={store} >  
            <App />  
        </Provider>  
    </div>,  
    document.getElementById('content')  
);  

不能。開箱即用Redux不提供在多個商店之間進行通信的解決方案。 商店之間的交流是Redux的前身Flux中的一種模式

Redux的多家商店只會讓事情變得更難管理。 所以你被警告了:)

但是,要使其正常工作,一種不明智的方法是設置另一個全局存儲,該存儲對一個存儲中的更改做出反應並通知另一存儲。 有關更多詳細信息,請查看我可以還是應該創建多個商店? 我可以直接導入商店,然后自己在組件中使用它嗎? 建議一個商店,將多個異徑管組合在一起。

原始的Flux模式描述了在一個應用程序中有多個“商店”,每個商店都存儲着不同的域數據區域。 這可能會帶來一些問題,例如需要一個商店“ waitFor”另一商店進行更新。 在Redux中這不是必需的,因為數據域之間的分離已經通過將單個reducer拆分為較小的reducer來實現。

盡管您最初認為多個商店可以解決問題,但請考慮以下因素(來自文檔)

但是,創建新商店並不是您的第一本能,特別是如果您來自Flux背景。 請先嘗試使用reducer composition,如果無法解決您的問題,請僅使用多個商店。

如果您有多個React根,您仍然可以在ReactDOM.render中將同一存儲傳遞給每個根

render(  
    <div>  
        <Provider store={store} >  
            <App1 />  
        </Provider>  
    </div>,  
    document.getElementById('name')  
);

render(  
    <div>  
        <Provider store={store} >  
            <App2 />  
        </Provider>  
    </div>,  
    document.getElementById('age')  
);

render(  
    <div>  
        <Provider store={store} >  
            <App3 />  
        </Provider>  
    </div>,  
    document.getElementById('form')  
);

<div id="name"></div><div id="age"></div><div id="form"></div>

這是可能的,因為Redux僅管理狀態,而與React Component樹結構或實際擁有的React樹無關。 它只是將狀態更改通知所有已訂閱狀態的人。

暫無
暫無

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

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