我正在使用react-router開(kāi)發(fā)一個(gè)React應(yīng)用程序。我有一個(gè)項(xiàng)目頁(yè)面,其URL如下:myapplication.com/project/unique-project-id當(dāng)項(xiàng)目組件加載時(shí),我從componentDidMount事件觸發(fā)了對(duì)該項(xiàng)目的數(shù)據(jù)請(qǐng)求。我現(xiàn)在遇到一個(gè)問(wèn)題,即如果我直接在兩個(gè)項(xiàng)目之間切換,那么只有id會(huì)這樣改變...myapplication.com/project/982378632myapplication.com/project/782387223myapplication.com/project/198731289componentDidMount不會(huì)再次觸發(fā),因此不會(huì)刷新數(shù)據(jù)。我是否應(yīng)該使用另一個(gè)生命周期事件來(lái)觸發(fā)我的數(shù)據(jù)請(qǐng)求,或者使用其他策略來(lái)解決此問(wèn)題?
3 回答

翻閱古今
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果鏈接僅通過(guò)不同的參數(shù)指向同一條路線,則它不是重新安裝,而是接收新的道具。因此,您可以使用該componentWillReceiveProps(newProps)函數(shù)并查找newProps.params.projectId。
如果您要加載數(shù)據(jù),我建議在路由器使用組件上的靜態(tài)方法處理匹配之前獲取數(shù)據(jù)。看看這個(gè)例子。反應(yīng)路由器兆演示。這樣,該組件將加載數(shù)據(jù)并在路由參數(shù)更改時(shí)自動(dòng)更新,而無(wú)需依賴(lài)componentWillReceiveProps。

慕容3067478
TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果在更改路線時(shí)確實(shí)需要重新安裝組件,則可以將唯一鍵傳遞給組件的key屬性(該鍵與您的路徑/路由相關(guān)聯(lián))。因此,每次路線更改時(shí),密鑰也會(huì)更改,從而觸發(fā)React組件卸載/重新安裝。我從這個(gè)答案中得到了主意
- 3 回答
- 0 關(guān)注
- 727 瀏覽
慕課專(zhuān)欄
更多
添加回答
舉報(bào)
0/150
提交
取消