React利用props的children实现插槽功能

 更新时间:2023年07月02日 11:18:05   作者:-耿瑞-  
React中并没有vue中的 slot 插槽概念 不过 可以通过props.children 实现类似功能,本文为大家整理了实现的具体方,需要的可以参考一下

可能会比较遗憾的说 React中并没有vue中的 slot 插槽概念 不过 可以通过props.children 实现类似功能

我们先创建一个React项目

在src下创建目录components 在下面创建一个dom.jsx组件

参考代码如下

import React from "react"
export default class dom extends React.Component {
    constructor(props){
      super(props);
      this.state = {
      }
    }
    render(){
      return (
        <div>
           <div>这里是dom组件</div>
           <div>{ this.props.children }</div>
           <div>元素结束</div>
        </div>
      )
    }
}

这里 大家可以将this.props.children 理解为我们vue中的slot父组件插入的内容就会放在这个位置

我们 App根组件编写代码如下

import React from "react"
import Dom from "./components/dom"
export default class App extends React.Component {
    constructor(props){
      super(props);
      this.state = {
      }
    }
    render(){
      return (
        <div>
           <Dom>
              <div>这是插槽内容</div>
           </Dom>
        </div>
      )
    }
}

我们正常调用了刚才写的dom组件 在中间插入了一个div 内容为 这是插槽内容

我们运行结果如下

可以看到 我们的内容被成功插入在了 this.props.children 的位置

知识补充

可能有小伙伴对于props.children并不太熟悉,下面小编为大家整理了props.children的相关知识,希望对大家有所帮助

简介

在典型的React数据流模型中,props 是组件对外的接口。props 作为父子组件沟通的桥梁,为组件的通信和传值提供了重要手段。

this.props 对象的属性与组件的属性一一对应,但其中有一个比较特殊的参数:this.props.children。它表示组件所有的子节点。

在组件内部使用 this.props.children,可以拿到用户在组件里面放置的内容。

如下例,一个 span 标签在 Parent 中作为Child的子节点传入,可在 Child 中通过 this.props.children 取到:

class Parent extends React.Component {
  render() {
    return (
    <Child>
        <span>{'child node'}</span>
      </Child>
    );
  }
}
class Child extends React.Component {
  render() {
    return (
      <div>
        {this.props.children}
      </div>
    );
  }
}

React.Children 方法

React 提供了工具方法 React.Children 来处理 this.props.children。

1. React.Children.map

object React.Children.map(object children, function fn)

遍历 props.children ,在每一个子节点上调用 fn 函数。

2. React.Children.forEach

React.Children.forEach(object children, function fn)

类似于 React.Children.map(),但是不返回对象。

3. React.Children.count

number React.Children.count(object children)

返回 children 当中的组件总数。

4. React.Children.only

object React.Children.only(object children)

返回 children 中仅有的子节点。如果在 props.children 传入多个子节点,将会抛出异常。

到此这篇关于React利用props的children实现插槽功能的文章就介绍到这了,更多相关React插槽内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React中进行条件渲染的实现方法

    React中进行条件渲染的实现方法

    React是一种流行的JavaScript库,它被广泛应用于构建Web应用程序,在React中,条件渲染是一个非常重要的概念,它允许我们根据不同的条件来呈现不同的内容,在本文中,我们将探讨React如何进行条件渲染,需要的朋友可以参考下
    2023-11-11
  • 在react中使用vuex的示例代码

    在react中使用vuex的示例代码

    这篇文章主要介绍了在react中使用vuex的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • react context优化四重奏教程示例

    react context优化四重奏教程示例

    这篇文章主要为大家介绍了react context优化四重奏教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • react hooks使用Echarts图表中遇到的情况及相关配置问题

    react hooks使用Echarts图表中遇到的情况及相关配置问题

    这篇文章主要介绍了react hooks使用Echarts图表中遇到的情况及相关配置问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 在 React 中使用 i18next的示例

    在 React 中使用 i18next的示例

    这篇文章主要介绍了在 React 中使用 i18next,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • React项目中decorators装饰器报错问题解决方案

    React项目中decorators装饰器报错问题解决方案

    这篇文章主要介绍了React项目中decorators装饰器报错,本文给大家分享问题所在原因及解决方案,通过图文实例相结合给大家介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • 一文详解React中Hook的作用和用处

    一文详解React中Hook的作用和用处

    Hook是一种函数,它可以让你在函数组件中“挂钩”到React状态和生命周期等特性,这篇文章主要和大家介绍了React中Hook的作用和用处,希望对大家有所帮助
    2023-05-05
  • React-Hook中使用useEffect清除定时器的实现方法

    React-Hook中使用useEffect清除定时器的实现方法

    这篇文章主要介绍了React-Hook中useEffect详解(使用useEffect清除定时器),主要介绍了useEffect的功能以及使用方法,还有如何使用他清除定时器,需要的朋友可以参考下
    2022-11-11
  • React实现数字滚动组件numbers-scroll的示例详解

    React实现数字滚动组件numbers-scroll的示例详解

    数字滚动组件,也可以叫数字轮播组件,这个名字一听就是非常普通常见的组件。本文将利用React实现这一组件,感兴趣的小伙伴可以了解一下
    2023-03-03
  • 解析react 函数组件输入卡顿问题 usecallback react.memo

    解析react 函数组件输入卡顿问题 usecallback react.memo

    useMemo是一个react hook,我们可以使用它在组件中包装函数。可以使用它来确保该函数中的值仅在依赖项之一发生变化时才重新计算,这篇文章主要介绍了react 函数组件输入卡顿问题 usecallback react.memo,需要的朋友可以参考下
    2022-07-07

最新评论