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

React實(shí)現(xiàn)類似于Vue中的插槽的項(xiàng)目實(shí)踐

 更新時(shí)間:2022年05月24日 10:43:40   作者:學(xué)習(xí)801  
本文主要介紹了React實(shí)現(xiàn)類似于Vue中的插槽的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近剛開始接觸React,感覺React比Vue更靈活一些,但是感覺代碼確實(shí)維護(hù)的時(shí)候可讀性也沒有Vue好(可能是因?yàn)槲姨肆耍?,Vue中很多都是自己的API, 看到這個(gè)api就知道想要實(shí)現(xiàn)的是什么功能,但是react 需要自己去讀一下代碼或者有好的代碼注釋習(xí)慣更好。

比如 Vue 中有一個(gè)插槽的概念,可以任意放置內(nèi)容,那么靈活的 React要怎么實(shí)現(xiàn)這個(gè)功能呢,這篇文章主要就是記錄一下“React實(shí)現(xiàn)類似于Vue中的插槽的效果”

搭建項(xiàng)目

// 創(chuàng)建項(xiàng)目
npx create-react-app my-app --template typescript

// 運(yùn)行項(xiàng)目
yarn start
  • 首先,我們需要將代碼中的一些無用代碼都刪除掉,只留下index.tsx 和 App.tsx 即可;

  • 新建 react-slot 文件夾,文件夾內(nèi)新建 index.tsx;

  • 新建 NavBar 組件和 navbar.css 樣式文件;

    完成之后,結(jié)構(gòu)如下:

實(shí)現(xiàn)方式1

使用 props.children

// NavBar.tsx

import React from 'react'
import './navbar.css'

type Props = {
  children: any[]
}
const NavBar = (props:Props) => {
  return (
    <div className='navbar-container'>
      <div className='navbar-left'>
        {props.children[0]}
      </div>
      <div className='navbar-center'>
        {props.children[1]}
      </div>
      <div className='navbar-right'>
        {props.children[2]}
      </div>
    </div>
  )
}

export default NavBar
// index.tsx

import React from 'react'
import NavBar from './NavBar'

const ReactSlot = () => {
  return (
    <div>
      <NavBar>
        <div>left---這里內(nèi)容可以隨意填充</div>
        <div>center---這里內(nèi)容可以隨意填充</div>
        <div>right---這里內(nèi)容可以隨意填充</div>
      </NavBar>
    </div>
  )
}

export default ReactSlot

實(shí)現(xiàn)方式2

實(shí)現(xiàn)方式1比較好理解,但是存在一個(gè)缺陷——三個(gè)子元素缺1不可,并且順序不可以錯(cuò)誤,代碼不宜讀;

實(shí)現(xiàn)方式2則是通過傳值的方式,將 jsx 代碼傳遞過去,可以一一對(duì)應(yīng),并且使用 leftSlot 等語義化的詞使得功能更易理解;

// NavBar.tsx

import React, { ReactNode } from 'react'
import './navbar.css'

type Props = {
  leftSlot: ReactNode
  centerSlot: ReactNode
  rightSlot: ReactNode
}
const NavBar = (props:Props) => {
  return (
    <div className='navbar-container'>
      <div className='navbar-left'>
        {props.leftSlot}
      </div>
      <div className='navbar-center'>
        {props.centerSlot}
      </div>
      <div className='navbar-right'>
        {props.rightSlot}
      </div>
    </div>
  )
}

export default NavBar
// index.tsx

import React from 'react'
import NavBar from './NavBar'

const ReactSlot = () => {
  return (
    <div>
      <NavBar 
        leftSlot={<div>left---這里內(nèi)容可以隨意填充</div>}
        centerSlot={<div>center---這里內(nèi)容可以隨意填充</div>}
        rightSlot={<div>right---這里內(nèi)容可以隨意填充</div>}
      ></NavBar>
    </div>
  )
}

export default ReactSlot

最終效果展示

上面兩種實(shí)現(xiàn)方式都是使用這份 css 樣式

// navbar.css

.navbar-container {
  display: flex;
  height: 50px;
  flex-direction: row;
  text-align: center;
  line-height: 50px;
}

.navbar-left {
  width: 20%;
  background-color: plum;
}

.navbar-center {
  width: 60%;
  background-color: bisque;
}
.navbar-right {
  width: 20%;
  background-color: lavender;
}

兩種實(shí)現(xiàn)方式的頁面效果都一樣,如下圖所示:

到此這篇關(guān)于React實(shí)現(xiàn)類似于Vue中的插槽的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)React 插槽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳解如何React中實(shí)現(xiàn)插槽

    一文詳解如何React中實(shí)現(xiàn)插槽

    這篇文章主要為大家詳細(xì)介紹了如何在React中實(shí)現(xiàn)插槽,文中的示例代碼講解詳細(xì),對(duì)我們的學(xué)習(xí)或工作具有一定的借鑒價(jià)值,需要的可以了解一下
    2023-03-03
  • React 組件渲染和更新的實(shí)現(xiàn)代碼示例

    React 組件渲染和更新的實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了React-組件渲染和更新的實(shí)現(xiàn)代碼示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • 使用 React hooks 實(shí)現(xiàn)類所有生命周期

    使用 React hooks 實(shí)現(xiàn)類所有生命周期

    react 自 16.8 開始,引入了 Hooks 概念,使得函數(shù)組件中也可以擁有自己的狀態(tài),并且可以模擬對(duì)應(yīng)的生命周期,這篇文章主要介紹了使用 React hooks 怎么實(shí)現(xiàn)類里面的所有生命周期,需要的朋友可以參考下
    2023-02-02
  • 淺談react?16.8版本新特性以及對(duì)react開發(fā)的影響

    淺談react?16.8版本新特性以及對(duì)react開發(fā)的影響

    本文主要介紹了react?16.8版本新特性以及對(duì)react開發(fā)的影響,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • React Hooks之useRef獲取元素示例詳解

    React Hooks之useRef獲取元素示例詳解

    這篇文章主要介紹了React Hooks之useRef獲取元素示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 詳解如何在React函數(shù)式組件中使用MobX

    詳解如何在React函數(shù)式組件中使用MobX

    MobX 是一個(gè)簡(jiǎn)潔的狀態(tài)管理庫(kù),它通過透明的函數(shù)響應(yīng)式編程(TFRP)使得狀態(tài)管理變得簡(jiǎn)單和可擴(kuò)展,下面就跟隨小編一起來了解一下如何在React函數(shù)式組件中使用MobX吧
    2024-01-01
  • React組件學(xué)習(xí)之Hooks使用

    React組件學(xué)習(xí)之Hooks使用

    這篇文章主要介紹了React hooks組件通信,在開發(fā)中組件通信是React中的一個(gè)重要的知識(shí)點(diǎn),本文通過實(shí)例代碼給大家講解react hooks中常用的父子、跨組件通信的方法,需要的朋友可以參考下
    2022-08-08
  • 解決React報(bào)錯(cuò)Invalid hook call

    解決React報(bào)錯(cuò)Invalid hook call

    這篇文章主要為大家介紹了React報(bào)錯(cuò)Invalid hook call解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 詳細(xì)分析React 表單與事件

    詳細(xì)分析React 表單與事件

    這篇文章主要介紹了React 表單與事件的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • React中關(guān)于render()的用法及說明

    React中關(guān)于render()的用法及說明

    這篇文章主要介紹了React中關(guān)于render()的用法及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論