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拖拽hooks

    一百多行代码实现react拖拽hooks

    这篇文章主要介绍了一百多行代码实现react拖拽hooks,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • react中的axios模块你了解吗

    react中的axios模块你了解吗

    这篇文章主要为大家详细介绍了react中的axios模块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • react进阶教程之异常处理机制error Boundaries

    react进阶教程之异常处理机制error Boundaries

    在react中一旦出错,如果每个组件去处理出错情况则比较麻烦,下面这篇文章主要给大家介绍了关于react进阶教程之异常处理机制error Boundaries的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • React Native基础入门之调试React Native应用的一小步

    React Native基础入门之调试React Native应用的一小步

    这篇文章主要给大家介绍了关于React Native基础入门之调试React Native应用的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • react umi 刷新或关闭浏览器时清除localStorage方式

    react umi 刷新或关闭浏览器时清除localStorage方式

    这篇文章主要介绍了react umi 刷新或关闭浏览器时清除localStorage方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • React项目仿小红书首页保姆级实战教程

    React项目仿小红书首页保姆级实战教程

    React 是一个用于构建用户界面的 Javascript库,接下来将通过实战小红书首页的详细介绍其设计思路和方法,将读者带入到react的开源世界,需要的朋友可以参考下
    2022-07-07
  • 无废话快速上手React路由开发

    无废话快速上手React路由开发

    本文以简洁为目标,帮助快速上手react-router-dom默认你接触过路由相关的开发,通过实例代码讲解的很详细,对React路由相关知识感兴趣的朋友一起看看吧
    2021-05-05
  • React Native仿美团下拉菜单的实例代码

    React Native仿美团下拉菜单的实例代码

    本篇文章主要介绍了React Native仿美团下拉菜单的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • react-json-editor-ajrm解析错误与解决方案

    react-json-editor-ajrm解析错误与解决方案

    由于历史原因,项目中 JSON 编辑器使用的是 react-json-editor-ajrm,近期遇到一个严重的展示错误,传入编辑器的数据与展示的不一致,这是产品和用户不可接受的,本文给大家介绍了react-json-editor-ajrm解析错误与解决方案,需要的朋友可以参考下
    2024-06-06
  • React创建组件的三种方式及其区别

    React创建组件的三种方式及其区别

    本文主要介绍了React创建组件的三种方式及其区别,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01

最新评论