簡體   English   中英

如果您總是可以使用狀態數據,為什么還要在反應中使用props?

[英]Why use props in react if you could always use state data?

我知道可以通過兩種方式傳遞組件數據:道具和狀態。 但是為什么一個人需要一個國家的支持呢? 似乎狀態對象只能在組件內部使用,那么為什么在標記中傳遞prop參數呢?

道具由父組件在外部設置。 例如;

render() {
    return <ChildComponent someProp={someValue}/>;
}

狀態是在內部設置的,通常是由孩子內的用戶事件觸發的。 例如;

handleUserClickedButton: () {
    this.setState({
        buttonClicked: true
    });
},

render() {
    return <button onClick={this.handleUserClickedButton}/>;
}

因此,道具是數據從父級到子級的一種方式。 狀態是在單個組件中管理數據的一種方式,狀態可能由子級觸發而對該數據進行更改。 實際上,它們表示沿兩個相反方向傳輸的數據,並且它們的傳遞方式完全是唯一的。

有兩種方法可以從組件外部“傳遞”或訪問數據,但state不是其中一種。
兩種方式是:
道具 -父組件傳遞給子組件的道具
上下文 -您可以在樹中“跳過”直接父級。

state是一個內部對象,除非您顯式傳遞(通過上述兩種方式),否則其他任何組件都無法訪問它。

所以基本上您的問題是不准確的,因為您無法真正比​​較兩者。
我認為您真正要問的是為什么使用無狀態組件而不是有狀態組件。
您可以在Stack-overflow或其他網站中找到答案。

編輯
您的一些評論的后續行動。

為什么孩子不僅有共同的狀態? 例如,每個組件(或子組件)都可以執行“ this.state”來獲取程序的當前狀態

  1. 無法共享或訪問其他功能中的私有對象的方式相同。
  2. 這是設計使然,您可以明確共享內容,並且只傳遞組件所需的內容。 例如,看一下此頁面上的堆棧溢出,可以說投票按鈕是組件,如果只需要投票計數和2個onClick事件偵聽器,為什么還要將整個狀態傳遞給它們? 我應該傳遞當前登錄的用戶,還是傳遞該頁面中給出的全部答案?

這樣就無法在父母與子女之間傳遞狀態? 例如,父母不能更改狀態,然后孩子獲得新狀態

這正是propscontext應該做的,提供了一個API,用於在父母與孩子之間共享數據,盡管我們以一種方式保持數據流(從父母到孩子),但您不能向上傳遞道具。 但是您調用傳遞到子組件的處理程序,並通過該處理程序傳遞數據。

暫無
暫無

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

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