最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

背景

在開(kāi)發(fā)一個(gè)需求時(shí),需要對(duì)原來(lái)的 form 表單組件代碼復(fù)用并進(jìn)行拓展。
場(chǎng)景A 使用原來(lái)的 form 表單組件。
場(chǎng)景B 在原來(lái)的表單組件基礎(chǔ)上,新增一些表單項(xiàng),新增表單項(xiàng)位置動(dòng)態(tài)插入在原來(lái)的表單組件中,位置隨意。

需求

復(fù)用表單組件,同時(shí)支持新增表單項(xiàng)。

解決方案

在 React 中,組件擴(kuò)展和定制的能力,可以通過(guò) props.childrenrender props 來(lái)實(shí)現(xiàn)。

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

props.children

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

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

通過(guò) props 參數(shù)傳入 JSX 元素的方法渲染,告知組件需要渲染什么內(nèi)容的函數(shù) prop。可以定義多個(gè) 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 沒(méi)有專(zhuān)門(mén)的插槽,根據(jù) children/props 的特性,加上只讀屬性 dataset 實(shí)現(xiàn)一個(gè)類(lèi)似的插槽功能。

非必要不使用,代碼會(huì)更加繁瑣。
如果有條件判斷是否展示,可以靈活設(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實(shí)現(xiàn)插槽slot功能的文章就介紹到這了,更多相關(guān)react插槽slot內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React?useCallback使用方法詳解

    React?useCallback使用方法詳解

    useCallback?是?React?的一個(gè)?Hook,用于記憶函數(shù)定義,避免在每次渲染時(shí)創(chuàng)建新的函數(shù)實(shí)例,本文主要來(lái)介紹一下它的具體用法,需要的可以參考一下
    2025-01-01
  • React實(shí)現(xiàn)TabBar切換與高亮功能

    React實(shí)現(xiàn)TabBar切換與高亮功能

    文章介紹了通過(guò)React Router的Route組件的exact屬性實(shí)現(xiàn)精確匹配路由路徑,并在路由切換時(shí)執(zhí)行菜單高亮邏輯,通過(guò)componentDidUpdate生命周期方法判斷路由地址是否切換來(lái)實(shí)現(xiàn)菜單項(xiàng)的高亮效果,需要的朋友可以參考下
    2026-05-05
  • react實(shí)現(xiàn)Radio組件的示例代碼

    react實(shí)現(xiàn)Radio組件的示例代碼

    這篇文章主要介紹了react實(shí)現(xiàn)Radio組件的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • react-diagram 序列化Json解讀案例分析

    react-diagram 序列化Json解讀案例分析

    今天帶來(lái)大家學(xué)習(xí)react-diagram 序列化Json解讀的相關(guān)知識(shí),本文通過(guò)多種案例給大家分析序列化知識(shí),通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2021-05-05
  • react-router實(shí)現(xiàn)跳轉(zhuǎn)傳值的方法示例

    react-router實(shí)現(xiàn)跳轉(zhuǎn)傳值的方法示例

    這篇文章主要給大家介紹了關(guān)于react-router實(shí)現(xiàn)跳轉(zhuǎn)傳值的相關(guān)資料,文中給出了詳細(xì)的示例代碼,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-05-05
  • react中實(shí)現(xiàn)拖拽排序react-dnd功能

    react中實(shí)現(xiàn)拖拽排序react-dnd功能

    這篇文章主要介紹了react中實(shí)現(xiàn)拖拽排序react-dnd功能,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • 深入了解React中的合成事件

    深入了解React中的合成事件

    React 中的事件,是對(duì)原生事件的封裝,叫做合成事件。這篇文章主要通過(guò)幾個(gè)簡(jiǎn)單的示例為大家詳細(xì)介紹一下React中的合成事件,感興趣的可以了解一下
    2023-02-02
  • React學(xué)習(xí)筆記之列表渲染示例詳解

    React學(xué)習(xí)筆記之列表渲染示例詳解

    最近在學(xué)習(xí)React,學(xué)習(xí)到了列表渲染這一塊,發(fā)現(xiàn)網(wǎng)上這方面的資料較少,所以自己來(lái)總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于React學(xué)習(xí)筆記之列表渲染的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • 教你應(yīng)用?SOLID?原則整理?React?代碼之單一原則

    教你應(yīng)用?SOLID?原則整理?React?代碼之單一原則

    這篇文章主要介紹了如何應(yīng)用?SOLID?原則整理?React?代碼之單一原則,今天,我們將從一個(gè)糟糕的代碼示例開(kāi)始,應(yīng)用 SOLID 的第一個(gè)原則,看看它如何幫助我們編寫(xiě)小巧、漂亮、干凈的并明確責(zé)任的 React 組件,需要的朋友可以參考下
    2022-07-07
  • React-Native 組件之 Modal的使用詳解

    React-Native 組件之 Modal的使用詳解

    本篇文章主要介紹了React-Native 組件之 Modal的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08

最新評(píng)論

和政县| 湘乡市| 唐海县| 扬州市| 龙口市| 米脂县| 德保县| 彝良县| 龙井市| 奉化市| 德惠市| 三原县| 东山县| 明星| 西乌珠穆沁旗| 鹿邑县| 威海市| 东阿县| 大方县| 全椒县| 砚山县| 冷水江市| 罗江县| 红河县| 龙门县| 瓮安县| 嘉祥县| 霍林郭勒市| 云梦县| 清苑县| 衡南县| 吉木乃县| 镇雄县| 鹿泉市| 新乡县| 五家渠市| 博兴县| 阿勒泰市| 徐闻县| 台东县| 建昌县|