鍍金池/ 問答/HTML5  HTML/ 關(guān)于用react+react router+redux開發(fā)多頁應(yīng)用時store的

關(guān)于用react+react router+redux開發(fā)多頁應(yīng)用時store的設(shè)計問題

最近在學(xué)react這個框架,之前只搭過單頁應(yīng)用,現(xiàn)在要用它來搭一個多頁的論壇應(yīng)用,遇到一些問題,求前輩解答。

我現(xiàn)在做到了從服務(wù)器獲取數(shù)據(jù)并發(fā)起 action 來改變 store 進而重新渲染頁面。

先問三個主要問題:
1、許多頁面有共享的數(shù)據(jù)信息,比如說論壇頭部簡單的用戶信息展示,這些信息應(yīng)該怎么放到 store 中去才不至于刷新、跳轉(zhuǎn)頁面等操作重置 store ?
因為頁面刷新或新開頁面,store 都會被重置,我設(shè)計了登錄頁面登錄成功后數(shù)據(jù)存入 store,并且頁面跳轉(zhuǎn)(window.location.href跳轉(zhuǎn))到論壇主頁,然后發(fā)現(xiàn) store 重置了,相當(dāng)于什么都沒干。
是應(yīng)該把這些共享數(shù)據(jù)先 loaclstorage 存好之后,在任何會導(dǎo)致頁面刷新效果的操作完成后再放到 store 中嗎?

2、因為我想做成多頁的,所以很多地方?jīng)]有使用 Link 標(biāo)簽而是用了 a 標(biāo)簽,這樣是不是錯的?

3、多頁模式下,不同的頁面的 store 是一樣的嗎?應(yīng)該怎么去設(shè)計多頁應(yīng)用下的 store?

回答
編輯回答
久愛她

1、store數(shù)據(jù)應(yīng)該是從后端獲取的然后存儲的,當(dāng)頁面刷新。應(yīng)該重新請求接口。論壇頭部信息在刷新的時候數(shù)據(jù)重新請求,跳轉(zhuǎn)應(yīng)該是路由跳轉(zhuǎn),頭部那塊應(yīng)該是不動的。
2、Link的本質(zhì)就是a標(biāo)簽,并且做了拓展。但你用了a去替換Link。這種做法不提倡。
3、不管多頁,單頁。整個應(yīng)用全局就一個store!不同頁面store肯定不一樣。有的可以按業(yè)務(wù)、有的按組件、有的按路由不固定。

2018年6月27日 15:56
編輯回答
兔囡囡

1、當(dāng)頁面刷新或者新打開頁面,包括打開一個新的tab,store都會重置。頁面跳轉(zhuǎn)應(yīng)該使用router。如果想要在刷新時,還需要以前的數(shù)據(jù),那么可以保存到sessionStorage中。
2、如果入口的url不變,仍然為單頁面,使用Linka標(biāo)簽都可以,因為Link最終被渲然為a.
3、我們所謂的多頁模式指的是入口url不同,才叫多頁。我們的做法是一個入口對應(yīng)一個entry,也就是一個應(yīng)用對應(yīng)一個store.

2017年4月12日 19:07