React使用Props實(shí)現(xiàn)父組件向子組件傳值
組件和Props的基礎(chǔ)
React組件是構(gòu)建用戶界面的基本單元,它們可以是類組件或函數(shù)組件。Props(屬性)是父組件傳遞給子組件的只讀數(shù)據(jù)。子組件可以通過定義Props來接收來自父組件的數(shù)據(jù)。
父組件向子組件傳值
父組件可以通過在子組件的標(biāo)簽上添加屬性來傳遞數(shù)據(jù)。這些屬性的值可以是任何JavaScript數(shù)據(jù)類型,包括字符串、數(shù)字、布爾值、對(duì)象、數(shù)組甚至是函數(shù)。
示例:傳遞簡單數(shù)據(jù)
// 父組件 function ParentComponent() { const message = 'Hello from Parent'; return <ChildComponent message={message} />; } // 子組件 function ChildComponent(props) { return <div>{props.message}</div>; }
在這個(gè)例子中,ParentComponent
通過message
屬性向ChildComponent
傳遞了一個(gè)字符串。
示例:傳遞復(fù)雜數(shù)據(jù)
// 父組件 function ParentComponent() { const user = { name: 'Alice', age: 25 }; return <UserProfile user={user} />; } // 子組件 function UserProfile(props) { return ( <div> <h1>{props.user.name}</h1> <p>Age: {props.user.age}</p> </div> ); }
在這個(gè)例子中,ParentComponent
通過user
屬性向UserProfile
組件傳遞了一個(gè)對(duì)象。
傳遞函數(shù)作為Props
除了傳遞數(shù)據(jù),父組件還可以通過Props向子組件傳遞函數(shù),這樣子組件就可以調(diào)用這些函數(shù)來與父組件通信。
// 父組件 function ParentComponent() { const handleButtonClick = () => { alert('Button clicked in ChildComponent!'); }; return <ChildComponent onButtonClick={handleButtonClick} />; } // 子組件 function ChildComponent(props) { return <button onClick={props.onButtonClick}>Click me</button>; }
在這個(gè)例子中,ParentComponent
傳遞了一個(gè)名為onButtonClick
的函數(shù)給ChildComponent
,子組件通過這個(gè)函數(shù)與父組件進(jìn)行交互。
結(jié)論
通過Props傳遞數(shù)據(jù)是React中實(shí)現(xiàn)父子組件通信的基本方式。這種機(jī)制簡單、直觀,是構(gòu)建可復(fù)用組件的關(guān)鍵。通過Props,父組件可以控制子組件的渲染和行為,同時(shí)保持組件之間的解耦。
拓展延伸:react props傳值頁面不更新
項(xiàng)目場景:
背景:
react-vite-antd
問題描述
通過props傳值,點(diǎn)擊編輯數(shù)據(jù)傳過去了,頁面沒更新
//index.tsx const [formObject, setformObject] = useState({ disabled: false, defineData: {}, }) const edit = (data)=>{ post('/adminapi/menu/edit', {id:data['id']}).then((res) => { if (childComponentRef.current) { childComponentRef.current.showModal(); setformObject({disabled:false,defineData:res.data[0]}) } }) } ```const formModel = <PageOneForm formObject={formObject} ref={FormRef}></PageOneForm> return ( <div> <Query queryList={queryList} openAdd={openAdd} ref={queryRef} getQueryDateFun={getQueryDateFun}></Query> <div style={listStyle}> <Tabel ref={tabelRef} columns={columns}></Tabel> </div> <Modal ref={childComponentRef} formModel={formModel} DialogTitle={'菜單管理'} onOk={handelOk}></Modal> </div> ) ---
改成這個(gè)之后好使了
原因分析:
Form.useForm()
是 Ant Design 中 Form 表單組件提供的自定義 hook,用于創(chuàng)建表單實(shí)例,使表單的狀態(tài)和操作可以被更好地管理。它是 Ant Design 提供的方便工具,用于幫助您更輕松地處理表單數(shù)據(jù)和交互。
通過使用 Form.useForm()
,您可以創(chuàng)建一個(gè)表單實(shí)例,并使用該實(shí)例來進(jìn)行以下操作:
表單數(shù)據(jù)初始化:通過
form.setFieldsValue()
方法,您可以初始化表單中的字段值,將外部數(shù)據(jù)與表單關(guān)聯(lián)起來。獲取表單數(shù)據(jù):使用
form.getFieldsValue()
可以輕松地獲取表單中的字段值。表單驗(yàn)證:您可以使用
form.validateFields()
來觸發(fā)表單的驗(yàn)證,以確保數(shù)據(jù)的正確性。提交表單:使用
form.submit()
來提交表單數(shù)據(jù)。
這些功能有助于更有效地管理表單狀態(tài),簡化表單操作,以及與外部數(shù)據(jù)的交互。 Ant Design 的 Form.useForm()
是一個(gè)方便的工具,特別是對(duì)于需要處理復(fù)雜表單的 React 應(yīng)用程序。
以上就是React使用Props實(shí)現(xiàn)父組件向子組件傳值的詳細(xì)內(nèi)容,更多關(guān)于React Props父組件向子組件傳值的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
React Native實(shí)現(xiàn)簡單的登錄功能(推薦)
這篇文章主要介紹了React Native實(shí)現(xiàn)登錄功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09React路由規(guī)則定義與聲明式導(dǎo)航及編程式導(dǎo)航分別介紹
這篇文章主要介紹了React路由規(guī)則的定義、聲明式導(dǎo)航、編程式導(dǎo)航,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09react使用axios進(jìn)行api網(wǎng)絡(luò)請(qǐng)求的封裝方法詳解
這篇文章主要為大家詳細(xì)介紹了react使用axios進(jìn)行api網(wǎng)絡(luò)請(qǐng)求的封裝方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03react 組件表格固定底部的實(shí)現(xiàn)代碼
在React中,要實(shí)現(xiàn)一個(gè)組件表格并且固定底部,可以使用CSS的固定定位或絕對(duì)定位來實(shí)現(xiàn),下面通過示例代碼給大家分享react 組件表格固定底部的實(shí)現(xiàn)代碼,感興趣的朋友跟隨小編一起看看吧2024-05-05React中實(shí)現(xiàn)使用條件渲染來顯示不同的內(nèi)容
在React中,條件渲染是根據(jù)不同的條件選擇性地渲染組件,本文介紹了三種常見的條件渲染方式:使用if語句、使用三元運(yùn)算符和使用短路運(yùn)算符,通過這些方法,我們可以根據(jù)應(yīng)用的狀態(tài)和用戶的操作動(dòng)態(tài)地顯示不同的內(nèi)容,從而提升用戶體驗(yàn)和組件的可維護(hù)性2025-02-02React+Router多級(jí)導(dǎo)航切換路由方式
這篇文章主要介紹了React+Router多級(jí)導(dǎo)航切換路由方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03