亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 React 中將道具傳遞給組件的更好方法是什么?

在 React 中將道具傳遞給組件的更好方法是什么?

長風秋雁 2022-09-23 16:12:05
哪個更適合傳遞道具?將整個對象作為道具傳遞?或分別傳遞它們?例如title="sample" description="sample desc"我知道它的情況。但是,在動態、后端就緒(API 集成)和性能方面,您更喜歡哪個?對不起,如果我描述得不好,但我相信你明白我的觀點。您的所有建議都是值得歡迎和正確的。謝謝??!編輯:還有缺點和優點
查看完整描述

4 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

讓我們看看每個選項的優缺點,給定組件:User


const User = ({name,lastName}) => <>...</>

破壞道具:

const props = {

  name: 'Jhon',

  lastName: 'Cena'

};


<User {...props}/>

優點

缺點

  • 鍵必須與屬性匹配

  • 容易出錯,當組件未使用某些鍵時,可能會出現意外行為

  • 無自動完成和自動建議

const props = {

  name: 'Jhon',

  lastName: 'Cena',

  id: 325013213

};


// User component might be updated in future releases and might use id unexpectedly.

<User {...props}/>

傳遞命名道具

const props = {

  user: 'Jhon',

  lastName: 'Cena'

};


<User name={user} lastName={lastName}/>

優點

  • 自動完成和自動建議

  • 值不必與 prop 名稱匹配(如name={user})

  • 維護

缺點

  • 長語法

  • 在許多道具上不可讀

  • 可重復 (className={className})


破壞命名的道具

const props = {

  name: 'Jhon',

  lastName: 'Cena'

};


<User {...{ name,lastName }}/>

道具

  • 自動完成和自動建議

  • 維護

缺點

  • 外觀和感覺都很糟糕


在我的代碼庫中,我試圖組合:

const props = {

  className: 'user',

  user: 'Jhon',

  lastName: 'Cena'

};


<User {...{className,lastName} name={user}/>


// Although you totally can write like this,

// I find it confusing

<User {...{className, name:user,lastName}/>


查看完整回答
反對 回復 2022-09-23
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

我想這取決于你在 React 組件中需要什么。我通常更喜歡保持我的組件盡可能干凈(純凈),并且只通過任何需要的東西作為道具。

我建議閱讀如何在 reacts.org 網站上指導反應和反應組件/道具中的思維。請記住,在JS原子值(字符串,數字,布爾值等)中,對象(數組也是對象)通過引用傳遞(請參閱此處此處),傳遞對象意味著您始終冒著在子組件中改變對象的風險,這直接與以下嚴格規則相矛盾:“所有 React 組件必須像純函數一樣操作其 props。

編輯:也就是說,這仍然取決于您的要求。如果您堅持不改變傳遞的對象,那應該沒問題。

這應該為您提供有關如何設計組件的相當好的指南。


查看完整回答
反對 回復 2022-09-23
?
DIEA

TA貢獻1820條經驗 獲得超2個贊

在我看來,我更喜歡將整個對象作為道具傳遞。因為它易于使用和轉換您想要的任何內容。


查看完整回答
反對 回復 2022-09-23
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

我會說作為對象會更好。就像我一樣,如果您需要通過API發送,您可以輕松地將其轉換為json。傳入對象也會將其設置為標準命名約定。當作為單獨的道具傳遞時,您可以靈活地重命名它們,但這可能會導致人為錯誤。如果將其作為對象傳遞,則從一開始就定義命名,并且不會更改它。因此,當在多個組件中引用對象時,您不必在道具中傳遞它時引用您定義的內容


查看完整回答
反對 回復 2022-09-23
  • 4 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號