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

React插槽使用方法

 更新時間:2021年12月17日 15:44:01   作者:有趣的老凌  
本文主要介紹了React插槽使用方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

需求

我們自己寫了個組件,引用組件時想要在組件中寫入內(nèi)容,并且寫入的內(nèi)容可以被組件識別、控制,用過Vue的同學(xué)肯定會立刻想到slot插槽,react也支持插槽功能,下面我們用react開發(fā)一個支持插槽功能的組件。

核心思想

父組件在子組件中傳入的三個div,這三個div會默認(rèn)通過props傳到子組件中,然后我們在子組件中控制children的渲染即可。

核心代碼

// 015 使用插槽
import React  from 'react';
import ReactDOM from 'react-dom';
// 父組件
class ParentDom extends React.Component {
    constructor(props) {
        super(props)
        this.state = {
            heardData:"頭部數(shù)據(jù)",
            footData:"底部數(shù)據(jù)",
            contentData:"內(nèi)容數(shù)據(jù)"
        }
    }
    componentDidMount() {
    }

    render() {
        return (
            <div>
                <h1>015使用插槽</h1>
                <ChildDom >
                    <div data-position="heard" >這是頭部</div>
                    <div data-position="content" >這是內(nèi)容 丨{this.state.contentData}</div>
                    <div data-position="foot" >這是底部</div>
                </ChildDom>
            </div>
        )
    }
}
// 子組件
class ChildDom extends React.Component {        
    constructor(props) {
        super(props)  
    }
    render() {
        let heard,content,foot;
        this.props.children.forEach(item =>{
            if(item.props['data-position'] == 'heard'){
                heard = item
            }else if(item.props['data-position'] == 'content'){
                content = item
            }else if(item.props['data-position'] == 'foot'){
                foot = item
            }
        })  
        return (
            <div >
                <p>我是子組件</p>
               <div className="heard">
                   {heard}
               </div>
               <div className="content">
                   {content}
               </div>
               <div className="foot">
                   {foot}
               </div>
            </div>
        )
    }
}

export default function () {
    ReactDOM.render(
        <ParentDom />,
        document.querySelector("#example15")
    );
}

展示效果

React實現(xiàn)插槽的兩種方式

由于在React組件中寫的內(nèi)容會被掛載到props中,以此來實現(xiàn)類似vue中的插槽功能

這是最外層代碼

import React, { Component } from 'react'
import NavBar from './NavBar'
import NavBar2 from './NavBar2'

export default class App extends Component {
  render() {
    return (
      <div>
        <NavBar>
          <span>aaa</span>
          <strong>bbb</strong>
          <a href="/#" rel="external nofollow"  rel="external nofollow" >ccc</a>
        </NavBar>

        <NavBar2 leftslot={<span>aaa</span>}
        centerslot={<strong>bbb</strong>}
        rightslot={<a href="/#" rel="external nofollow"  rel="external nofollow" >ccc</a>}/>
      </div>
    )
  }
}

1.用this.props.children[index]

import React, { Component } from 'react'

import './style.css'
export default class NavBar extends Component {
  render () {
    return (
      <div className="nav-bar">
        <div className="nav-left">
          {this.props.children[0]}
        </div>
        <div className="nav-center">
          {this.props.children[1]}
        </div>
        <div className="nav-right">
          {this.props.children[2]}
        </div>
      </div>
    )
  }
}

2.用直接命名方式

import React, { Component } from 'react'

import './style.css'
export default class NavBar extends Component {
  render () {
    const {leftslot, centerslot,rightslot} = this.props
    return (
      <div className="nav-bar">
        <div className="nav-left">
          {leftslot}
        </div>
        <div className="nav-center">
          {centerslot}
        </div>
        <div className="nav-right">
          {rightslot}
        </div>
      </div>
    )
  }
}

到此這篇關(guān)于React插槽使用方法的文章就介紹到這了,更多相關(guān)React插槽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react setupProxy.js導(dǎo)致項目無法啟動的解決

    react setupProxy.js導(dǎo)致項目無法啟動的解決

    這篇文章主要介紹了react setupProxy.js導(dǎo)致項目無法啟動的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • React項目開發(fā)中函數(shù)組件與函數(shù)式編程關(guān)系

    React項目開發(fā)中函數(shù)組件與函數(shù)式編程關(guān)系

    函數(shù)組件和函數(shù)式編程究竟是什么關(guān)系呢?本文會圍繞這個話題展開講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 基于React-Dropzone開發(fā)上傳組件功能(實例演示)

    基于React-Dropzone開發(fā)上傳組件功能(實例演示)

    這篇文章主要介紹了基于React-Dropzone開發(fā)上傳組件,主要講述的是在React-Flask框架上開發(fā)上傳組件的技巧,需要的朋友可以參考下
    2021-08-08
  • react中setState的執(zhí)行機(jī)制詳解

    react中setState的執(zhí)行機(jī)制詳解

    setState() 的執(zhí)行機(jī)制包括狀態(tài)合并、批量更新、異步更新、虛擬 DOM 比較和渲染組件等步驟,這樣可以提高性能并優(yōu)化渲染過程,這篇文章主要介紹了react中的setState的執(zhí)行機(jī)制,需要的朋友可以參考下
    2023-10-10
  • React?Fiber?樹思想解決業(yè)務(wù)實際場景詳解

    React?Fiber?樹思想解決業(yè)務(wù)實際場景詳解

    這篇文章主要為大家介紹了React?Fiber?樹思想解決業(yè)務(wù)實際場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • react+ant design實現(xiàn)Table的增、刪、改的示例代碼

    react+ant design實現(xiàn)Table的增、刪、改的示例代碼

    這篇文章主要介紹了react+ant design實現(xiàn)Table的增、刪、改的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • react-native-tab-navigator組件的基本使用示例代碼

    react-native-tab-navigator組件的基本使用示例代碼

    本篇文章主要介紹了react-native-tab-navigator組件的基本使用示例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-09-09
  • 從頭寫React-like框架的工程搭建實現(xiàn)

    從頭寫React-like框架的工程搭建實現(xiàn)

    這篇文章主要介紹了從頭寫React-like框架的工程搭建實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 一文學(xué)會使用Remix寫API接口

    一文學(xué)會使用Remix寫API接口

    這篇文章主要為大家介紹了一文學(xué)會Remix寫API接口實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • React冒泡和阻止冒泡的應(yīng)用詳解

    React冒泡和阻止冒泡的應(yīng)用詳解

    這篇文章主要介紹了React冒泡和阻止冒泡的應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論

资源县| 石林| 龙江县| 田阳县| 绥滨县| 丹寨县| 克东县| 宁津县| 富锦市| 杭锦旗| 临洮县| 石河子市| 罗山县| 两当县| 哈密市| 绥德县| 通山县| 陈巴尔虎旗| 无棣县| 阿拉善盟| 湾仔区| 西华县| 沧源| 德兴市| 农安县| 雅安市| 巴林左旗| 丹江口市| 北川| 寿宁县| 若尔盖县| 渝中区| 开化县| 客服| 攀枝花市| 澜沧| 淮安市| 老河口市| 互助| 维西| 武安市|