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

React中實現(xiàn)插槽效果的方案詳解

 更新時間:2022年09月27日 14:36:09   作者:林有酒  
在React中是沒有插槽的概念的, 或者說在React中是不需要插槽的, 因為React對于這種需要插槽的情況非常靈活,本文給大家分享兩種方案實現(xiàn),分別是children實現(xiàn)插槽和props實現(xiàn)插槽,結合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧

React實現(xiàn)插槽

在開發(fā)中,我們抽取了一個組件,但是為了讓這個組件具備更強的通用性,我們不能將組件中的內容限制為固定的div、span等等這些元素。

我們應該讓使用者可以決定某一塊區(qū)域到底存放什么內容

在這里插入圖片描述

這種需求在Vue當中有一個固定的做法是通過slot來完成的,React呢?

在React中是沒有插槽的概念的, 或者說在React中是不需要插槽的, 因為React對于這種需要插槽的情況非常靈活,有兩種方案可以實現(xiàn):

組件的children子元素;

props屬性傳遞React元素;

children實現(xiàn)插槽

每個組件都可以獲取到 props.children:它包含組件的開始標簽和結束標簽之間的內容。

例如我們實現(xiàn)一個navbar, 要求左邊, 中間, 右邊的內容是不固定的, 由使用者來決定到底放什么

在父組件的子組件標簽中寫入要插入到子組件的元素

import React, { Component } from 'react'
import NavBar from './c-cpns/NavBar'

export class App extends Component {
  render() {
    return (
      <div>
        {/* 父組件將要插入到子組件的元素寫到組件標簽中 */}
        <NavBar>
          <button>按鈕</button>
          <h2>標題</h2>
          <i>斜體</i>
        </NavBar>
      </div>
    )
  }
}

export default App

在子組件中通過this.props可以獲取到一個children屬性, 該屬性中包含子組件標簽開始到結束之間的內容

import React, { Component } from 'react'
import './style.css'

export class NavBar extends Component {
  render() {
    // 在子組件通過props中的children, 獲取到要插入的元素
    const { children } = this.props
    return (
      <div className='nav-bar'>
        <div className='left'>
          {children[0]}
        </div>
        <div className='center'>
          {children[1]}
        </div>
        <div className='right'>
          {children[2]}
        </div>
      </div>
    )
  }
}

export default NavBar

注意: 如果children中有多個元素, 那么children是一個數(shù)組, 數(shù)組中存放著所有內容; 如果只插入一個元素到子組件中, 那么children本身就是插入的該元素, 如下:

父組件中只插入了一個元素

return (
  <div>
    {/* 父組件將要插入到子組件的元素寫到組件標簽中 */}
    <NavBar>
      <button>按鈕</button>
    </NavBar>
  </div>
)

子組件直接使用children即可

render() {
  // 在子組件通過props中的children, 獲取到要插入的元素
  const { children } = this.props
  return (
    <div className='nav-bar'>
      <div className='left'>
        {children}
      </div>
    </div>
  )
}

props實現(xiàn)插槽

通過children實現(xiàn)的方案雖然可行,但是有一個弊端:通過索引值獲取傳入的元素很容易出錯,不能精準的獲取傳入的原生;

而且對順序有嚴格的要求

另外一個種方案就是使用 props 實現(xiàn)(這個方案也是開發(fā)中使用的比較多的方案, 個人更推薦)

我們之間通過具體的屬性名,可以讓我們在傳入和獲取時更加的精準;

首先在父組件通過props的方式將要插入的元素傳入到子組件中

render() {
  // 在子組件通過props中的children, 獲取到要插入的元素
  const { children } = this.props
  return (
    <div className='nav-bar'>
      <div className='left'>
        {children}
      </div>
    </div>
  )
}

再在子組件中獲取到傳遞的數(shù)據(jù)進行展示

import React, { Component } from 'react'

export class NavBarTow extends Component {
  render() {
    // 在子組件中獲取到父組件傳遞過來的數(shù)據(jù)
    const { leftSlot, centerSlot, rightSlot } = this.props

    return (
      <div className='nav-bar'>
        {/* 將傳遞過來的數(shù)據(jù)進行展示 */}
        <div className='left'>
          {leftSlot}
        </div>
        <div className='center'>
          {centerSlot}
        </div>
        <div className='right'>
          {rightSlot}
        </div>
      </div>
    )
  }
}

export default NavBarTow

到此這篇關于React中實現(xiàn)插槽效果的方案的文章就介紹到這了,更多相關React實現(xiàn)插槽內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • React 項目中動態(tài)設置環(huán)境變量

    React 項目中動態(tài)設置環(huán)境變量

    本文主要介紹了React 項目中動態(tài)設置環(huán)境變量,本文將介紹兩種常用的方法,使用 dotenv 庫和通過命令行參數(shù)傳遞環(huán)境變量,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 使用React hook實現(xiàn)remember me功能

    使用React hook實現(xiàn)remember me功能

    相信大家在使用 React 寫頁面的時候都遇到過完成 Remember me 的需求吧!本文就將這個需求封裝在一個 React hook 中以供后續(xù)的使用,覺得有用的同學可以收藏起來以備不時之需,感興趣的小伙伴跟著小編一起來看看吧
    2024-04-04
  • React 組件間的通信示例

    React 組件間的通信示例

    這篇文章主要介紹了React 組件間的通信示例,主要通信劃分為三種,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • React中使用axios發(fā)送請求的幾種常用方法

    React中使用axios發(fā)送請求的幾種常用方法

    本文主要介紹了React中使用axios發(fā)送請求的幾種常用方法,主要介紹了get和post請求,具有一定的參考價值,感興趣的可以了解一下
    2021-08-08
  • React?Hooks--useEffect代替常用生命周期函數(shù)方式

    React?Hooks--useEffect代替常用生命周期函數(shù)方式

    這篇文章主要介紹了React?Hooks--useEffect代替常用生命周期函數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • react hooks實現(xiàn)防抖節(jié)流的方法小結

    react hooks實現(xiàn)防抖節(jié)流的方法小結

    這篇文章主要介紹了react hooks實現(xiàn)防抖節(jié)流的幾種方法,文中通過代碼示例給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • 記錄一次完整的react hooks實踐

    記錄一次完整的react hooks實踐

    這篇文章主要介紹了記錄一次完整的react hooks實踐,通過一個簡單示例,介紹了react hooks,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • React Router 5.1.0使用useHistory做頁面跳轉導航的實現(xiàn)

    React Router 5.1.0使用useHistory做頁面跳轉導航的實現(xiàn)

    本文主要介紹了React Router 5.1.0使用useHistory做頁面跳轉導航的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • React組件的用法概述

    React組件的用法概述

    React組件用來實現(xiàn)局部功能效果的代碼和資源的集合(html/css/js/image等等),這篇文章主要介紹了React組件的用法和理解,需要的朋友可以參考下
    2023-02-02
  • React如何自定義輪播圖Carousel組件

    React如何自定義輪播圖Carousel組件

    這篇文章主要介紹了React如何自定義輪播圖Carousel組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

伊宁县| 吴桥县| 武胜县| 宁国市| 石棉县| 织金县| 南昌市| 鞍山市| 深州市| 沂水县| 历史| 舟山市| 广东省| 温州市| 浙江省| 镇巴县| 白沙| 五原县| 扶余县| 如皋市| 平昌县| 南汇区| 安达市| 巨鹿县| 张掖市| 凤山县| 广州市| 巴楚县| 聂拉木县| 甘肃省| 和政县| 北流市| 新泰市| 扎鲁特旗| 天气| 庆阳市| 马山县| 霍林郭勒市| 北海市| 石林| 丁青县|