React資料流和元件間的通訊總結

2022-02-25 09:32:15 字數 2575 閱讀 2954

今天來給大家總結下react的單向資料流與元件間的溝通。

首先,我認為使用react的最大好處在於:功能元件化,遵守前端可維護的原則。

先介紹單向資料流吧。

react

單向資料流:

react是單向資料流,資料主要從父節點傳遞到子節點(通過props)。

如果頂層(父級)的某個props改變了,react會重渲染所有的子節點。

剛才我們提到了props,怎麼理解props呢?

props

props是property的縮寫,可以理解為html標籤的attribute。

不可以使用this.props直接修改props,因為props是唯讀的,props是用於整個元件樹中傳遞資料和配置。

在當前元件訪問props,使用this.props

這裡貼出props使用**:

* data 為乙個模擬資料,無具體意義,僅供舉例使用。

接下來說說state

state:

每個元件都有屬於自己的statestateprops的區別在於前者(state)只存在於元件內部,只能從當前元件呼叫this.setstate修改state值(不可以直接修改this.state!)。

一般我們更新子元件都是通過改變state值,更新新子元件的props值從而達到更新。

我們舉個例項吧:

這裡使用getinitialstate來初始化state,例子裡面state是text,然後通過this.state.text讀取state值

props與state:

盡可能使用props當做資料來源,state用來存放狀態值(簡單的資料)。

也就是說咱們通常用props傳遞大量資料,state用於存放元件內部一些簡單的定義資料。(需要通過大量運用react可以感受這點)

那麼,單向資料流的原理及一些概念咱麼說完了,接下來咱們看看元件間是怎麼進行溝通的:

一般來說,有兩種溝通方式:

一、父子元件溝通

在react中,最為常見的元件溝通也就是父子了,一般情況是:

* 父元件更新元件狀態  -----props-----> 子元件更新

另一種情況是:

* 子元件更新父元件狀態   -----需要父元件傳遞**函式----->  子元件呼叫觸發

可能大家對於第二種子元件更新父元件狀態的情況有些不理解:

是這樣的,一般情況下,只能由父元件通過props傳遞資料給子元件,使得子元件得到更新,那麼現在,我們想實現

子元件更新父元件就需要 父元件通過props傳遞乙個**函式到子元件中,這個**函式可以更新父元件,子元件就是

通過觸發這個**函式,從而使父元件得到更新。(類似於一種取巧的做法)

這裡貼出 子元件更新父元件 **:

在這個例子中,refreshbox是父元件建立的乙個**函式,將其傳入son元件中,然後通過son元件進行呼叫觸發,

進而改變state,實現子元件對父元件的更新。

二、兄弟元件溝通

當兩個元件處於同一級時(同處父級,或者同處子級),就稱為兄弟元件。

這裡有兩種實現方式:

方式一:

按照react單向資料流方式,我們需要借助父元件進行傳遞,通過父元件**函式改變兄弟元件的props

其實這種實現方式與子元件更新父元件狀態的方式是大同小異的。

方式二:

方式乙隻適用於元件層次很少的情況,當元件層次很深的時候,整個溝通的效率就會變得很低

在這裡,react官方給我們提供了一種上下文方式,可以讓子元件直接訪問祖先的資料或函式,無需從祖先元件一層層地傳遞資料到子元件中。

但這種方法建議按需使用,可能會導致一些不可預期的錯誤。(比如資料傳遞邏輯結構不清晰)

在這裡直接貼出例子:

首先要對使用物件進行說明,box.childcontexttype就是這樣乙個上下文宣告,子元件呼叫祖先元件的方法時,

通過 this.context.[callback] 這樣就可以進行祖先與子元件間的溝通了。

總結:今天在這裡總結了單向資料流的概念與元件間的溝通,希望大家看後能對react一些基本原理有更深的理解,有錯誤的地方私信我,我改正。

React的單向資料流與元件間的溝通

今天來給大家總結下react的單向資料流與元件間的溝通。首先,我認為使用react的最大好處在於 功能元件化,遵守前端可維護的原則。先介紹單向資料流吧。react 單向資料流 react是單向資料流,資料主要從父節點傳遞到子節點 通過props 如果頂層 父級 的某個props改變了,react會重...

React 元件間的通訊示例

前言 從官網上也有介紹元件間如何通訊,但不夠詳細,這裡做個小結,方便對比和回顧 本文內容 處理元件之間的通訊,主要取決於元件之間的關係,因此我們劃分為以下三種 一 父元件 向 子元件 傳值 這是最普遍的用法,實現上也非常簡單,主要是利用props來實現 父元件 import react from r...

元件 單向資料流

所有的 prop 都使得其父子 prop 之間形成了乙個單向下行繫結 父級 prop 的更新會向下流動到子元件中,但是反過來則不行。這樣會防止從子元件意外改變父級元件的狀態,從而導致你的應用的資料流向難以理解。這裡有兩種常見的試圖改變乙個 prop 的情形 1 這個 prop 用來傳遞乙個初始值 這...