欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解react實現(xiàn)插槽slot功能

 更新時間:2025年09月21日 11:10:13   作者:樹上有只程序猿  
本文主要介紹了詳解react實現(xiàn)插槽slot功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

背景

在開發(fā)一個需求時,需要對原來的 form 表單組件代碼復(fù)用并進行拓展。
場景A 使用原來的 form 表單組件。
場景B 在原來的表單組件基礎(chǔ)上,新增一些表單項,新增表單項位置動態(tài)插入在原來的表單組件中,位置隨意。

需求

復(fù)用表單組件,同時支持新增表單項。

解決方案

在 React 中,組件擴展和定制的能力,可以通過 props.childrenrender props 來實現(xiàn)。

以上兩種方式的缺點是:如果插入位置比較分散,需要定義children對象或多個 props,代碼繁瑣,不易維護。調(diào)研下來,目前貌似沒其他好的方法... 歡迎補充

props.children

props.children 直接將內(nèi)容作為一個HTML內(nèi)嵌結(jié)構(gòu)編寫,將組件參數(shù)與內(nèi)嵌結(jié)構(gòu)分開寫。
children 可以是一個字符串, 數(shù)組,對象等類型。可以使用 React.Children 的方法來判斷props.children 類型并處理。

function Father() {
    return (
        <div>
            我是父組件Father
            <Form1>
              <div>我是子組件Form1的children</div>
            </Form1>
            <Form2>
                {{
                    title: (<div>我是子組件Form2的title</div>),
                    content: (<div>我是子組件Form2的content</div>)
                }}
            </Form2>
        </div>
    )
}

function Form1(props) {
    return (
        <div>
            我是子組件Form1
            {props.children}
        </div>
    )
}

function Form2(props) {
    return (
        <div>
            我是子組件Form2
            {props.children.title}
            {props.children.content}
        </div>
    )
}

render props

通過 props 參數(shù)傳入 JSX 元素的方法渲染,告知組件需要渲染什么內(nèi)容的函數(shù) prop??梢远x多個 props 參數(shù),不同位置渲染不同的 props。

function Father() {
    return (
        <div>
            我是父組件Father
            <Form1
              children={<div>我是子組件Form1的children</div>}
            />
            <Form2
              title={<div>我是子組件Form2的title</div>}
              content={<div>我是子組件Form2的content</div>}
            />
        </div>
    )
}

function Form1(props) {
    return (
        <div>
            我是子組件Form1
            {props.children}
        </div>
    )
}

function Form2(props) {
    return (
        <div>
            我是子組件Form2
            {props.title}
            {props.content}
        </div>
    )
}

dataset

React 沒有專門的插槽,根據(jù) children/props 的特性,加上只讀屬性 dataset 實現(xiàn)一個類似的插槽功能。

非必要不使用,代碼會更加繁瑣。
如果有條件判斷是否展示,可以靈活設(shè)置 dataset 值使用。

function Father() {
  return (
    <div>
      我是父組件Father
      <Form1
        type='text1'
        title={<div>我是子組件Form的title</div>}
        bottom={<div>我是子組件Form的bottom</div>}
      >
        <div data-type='text1'>
          <label>性別:</label>
          <input type="text" name="gender" />
        </div>
        <div data-type='text1,text2'>
          <label>身高:</label>
          <input type="text" name="height" />
        </div>
        <div data-type='text2,text3'>
          <label>體重:</label>
          <input type="text" name="weight" />
        </div>
      </Form1>
    </div>
  )

到此這篇關(guān)于詳解react實現(xiàn)插槽slot功能的文章就介紹到這了,更多相關(guān)react插槽slot內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React State狀態(tài)與生命周期的實現(xiàn)方法

    React State狀態(tài)與生命周期的實現(xiàn)方法

    這篇文章主要介紹了React State狀態(tài)與生命周期的實現(xiàn)方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • React事件綁定的方式詳解

    React事件綁定的方式詳解

    react事件綁定時。this并不會指向當(dāng)前DOM元素。往往使用bind來改變this指向,今天通過本文給大家介紹React事件綁定的方式,感興趣的朋友
    2021-07-07
  • React中的?ref?及原理解析

    React中的?ref?及原理解析

    本章深入探討了React?Ref的用法和原理,還介紹了如何使用useImperativeHandle在函數(shù)組件中暴露方法,并詳細解釋了ref的處理邏輯和原理,包括在commit階段更新ref以及在組件卸載時的處理,感興趣的朋友一起看看吧
    2025-01-01
  • 詳解Immutable及 React 中實踐

    詳解Immutable及 React 中實踐

    Immutable 可以給 React 應(yīng)用帶來數(shù)十倍的提升,也有人說 Immutable 的引入是近期 JavaScript 中偉大的發(fā)明,因為同期 React 太火,它的光芒被掩蓋了。這篇文章主要介紹了Immutable及 React 中的實踐,需要的朋友可以參考下
    2018-03-03
  • 在React中集成第三方庫和插件方式

    在React中集成第三方庫和插件方式

    本文詳細介紹了如何在React項目中高效集成第三方庫和插件,包括選擇合適的庫、封裝為React組件、按需加載、避免直接操作DOM、處理庫的更新和卸載、樣式處理與主題定制、性能優(yōu)化以及調(diào)試與維護等方面,通過遵循這些最佳實踐,可以確保集成過程高效且優(yōu)雅
    2025-03-03
  • react如何同步獲取useState的最新狀態(tài)值

    react如何同步獲取useState的最新狀態(tài)值

    這篇文章主要介紹了react如何同步獲取useState的最新狀態(tài)值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • React深入淺出分析Hooks源碼

    React深入淺出分析Hooks源碼

    在react類組件(class)寫法中,有setState和生命周期對狀態(tài)進行管理,但是在函數(shù)組件中不存在這些,故引入hooks(版本:>=16.8),使開發(fā)者在非class的情況下使用更多react特性
    2022-11-11
  • React庫之react-beautiful-dnd介紹及其使用過程

    React庫之react-beautiful-dnd介紹及其使用過程

    在使用React構(gòu)建Web應(yīng)用程序時,拖拽功能是一項常見需求,為了方便實現(xiàn)拖拽功能,我們可以借助第三方庫react-beautiful-dnd,本文將介紹react-beautiful-dnd的基本概念,并結(jié)合實際的項目代碼一步步詳細介紹其使用過程,需要的朋友可以參考下
    2023-11-11
  • 淺談React組件props默認值的設(shè)置

    淺談React組件props默認值的設(shè)置

    本文主要介紹了淺談React組件props默認值的設(shè)置,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • React+Koa實現(xiàn)文件上傳的示例

    React+Koa實現(xiàn)文件上傳的示例

    這篇文章主要介紹了React+Koa實現(xiàn)文件上傳的示例,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下
    2021-04-04

最新評論