[英]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”來獲取程序的當前狀態
onClick
事件偵聽器,為什么還要將整個狀態傳遞給它們? 我應該傳遞當前登錄的用戶,還是傳遞該頁面中給出的全部答案? 這樣就無法在父母與子女之間傳遞狀態? 例如,父母不能更改狀態,然后孩子獲得新狀態
這正是props
或context
應該做的,提供了一個API,用於在父母與孩子之間共享數據,盡管我們以一種方式保持數據流(從父母到孩子),但您不能向上傳遞道具。 但是您調用傳遞到子組件的處理程序,並通過該處理程序傳遞數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.