react 元件數比較深的時候,子元件怎麼向父元件傳指

時間 2021-05-06 22:15:43

1樓:隋堤倦客

eventbus

當然寫的時候一時爽,之後就比較蛋疼

試試context,其實挺好用的

要是工程有很複雜的預期還是用redux吧,redux真的很清晰很好用,除了寫起來麻煩點

2樓:yoom

說個不同的方案吧,我更傾向於發布訂閱的方式,使用了Rxjs。

這樣子就跟框架無關了,無論React或Vue都可以方便的使用。

// event$.js

import

from

'rxjs'

import

from

'rxjs/operators'

// 外部喂資料

export

const

event$

=new

Subject

()// 外部訂閱

export

function

on$(

types

,callback

)return

event$

.pipe

(share

(),filter

((message

)=>))

.subscribe

(callback)}

/*** 在下面元件中,匯入上面物件或方法* import from '@/a/b/c/event$.js'

*/// 地心元件A

event$

.next

()// 地表元件B

letunsubscribe

=on$

('地心報告',(

res)

=>)

3樓:張大宗偉

這裡的父子元件巢狀的層級是多深呢? 我認為肯定是有幾層的吧,資料相對簡單我會使用context,相對複雜會使用redux,選擇相對適合的吧。以上。

4樓:Galen Sheen

看每個人的使用風格吧

一、最簡單的就是父元件有乙個同步資料的函式,一層層傳給子元件,然後由自元件呼叫函式,把值傳出來。

二、寫乙個單例的狀態管理器,使用發布與訂閱模式。每個元件訂閱自己關心的屬性,如果屬性變化了可以重新setState,也可以forceUpdate。這樣無論是父元件還是子元件,都可以使用這個單例狀態管理器去更新某乙個屬性了。

三、使用context,父元件定義好屬性及函式,然後子元件去函式並將信值傳給父元件。

四、高階元件,將上面兩個的邏輯封裝成高階元件,子元件使用了高階元件之後就可以直接在屬性拿更新函式執行。

五、使用redux或mobx,最簡單。我使用mobx更多,簡單易上手,觀察者模式,不分層級平等使用store,更新屬性後自動更新渲染,比redux好用太多,學習成本非常低

差不多這些吧,具體使用哪個方法,要看專案及元件的複雜度。若要封裝成業務元件供其他同學使用,最好把邏輯封到元件內部,哪怕使用了redux或mobx,高內聚低耦合嘛……

5樓:rxdxxxx

翻翻文件的話, 可以找到些思路

直接的父子關係,可以使用 props ,Context 提供了乙個無需為每層元件手動新增 props,就能在元件樹間進行資料傳遞的方法。

使用第三方庫 和 Model 層整合

如果上面的都不符合你的想法, 你可以試試 events ,它的用法和 Nodo.js 中的 events 模組一樣.

從此媽媽再也不用擔心元件層次太深了.

6樓:

當專案複雜的時候建議直接上redux,以免後續迭代麻煩。不複雜的時候可以考慮react的context,這也是redux管理資料的原理,即在context上又封了一層。

React 有哪些優秀實用的元件?

秘雨軒 介紹下自己寫 React UWP吧,實現微軟 UWP Design 和 Fluent Design 的 React 開源UI庫。這是官方文件 UWP and Fluent Design UI Libray by React 長這樣的. ProfLiu github上面有乙個開源專案,羅列了很...

react中某個元件的狀態變了,但是內部的乙個子元件並沒有變化,那麼這個子元件會重新渲染嗎?

高山景行 乙個元件執行setState之後,從這個元件為根的元件樹會有乙個更新的過程,每個元件都會根據自己的shouldComponentUpdate的結果執行render方法,然後和上次render的結果比較,找到最小差集之後patch到真實dom上。所以,如果子元件的shouldComponen...

在react中,當乙個元件依賴另乙個元件的寬度或者高度,來設定它的寬度 左右偏移量,該或者做?

張振衣 我之前的解決方案是寫乙個 Ruler 類,它在使用者不能意識到的地方進行渲染 可以是 visibility hidden,或者 z index,或者放在螢幕外 然後把 width 寫到 redux 裡面。第二個點在於,這個過程必須經過真實渲染,是無法避開的。至於那個不需要的切換效果,是可以避...