返回顶部
首页 > 资讯 > 精选 >React中怎么实现插槽
  • 489
分享到

React中怎么实现插槽

2023-07-05 17:07:38 489人浏览 安东尼
摘要

今天小编给大家分享一下React中怎么实现插槽的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。React中实现插槽设计插槽在R

今天小编给大家分享一下React中怎么实现插槽的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

React中实现插槽

设计插槽

在React中实现插槽需要我们自己来实现 主要用到props.children

我们以跟组件作为父组件

创建子组件DemoOne组件

import React from "react";import ReactDOM from "react-dom/client";import DemoOne from "./views/DemoOne";const root = ReactDOM.createRoot(document.getElementById("root"));root.render(<><DemoOne title="我是标题" x={10}><span>哈哈哈</span><span>呵呵呵</span></DemoOne><DemoOne title="嘿嘿嘿"><span>嘿嘿嘿</span></DemoOne><DemoOne title="哈哈哈" /></>);
import React from "react";const DemoOne = function DemoOne(props) {let {title, x, children } = props;console.log(children);return (<div className="demo-BOX">{children}</div>);};DemoOne.propTypes = {title: PropTypes.string.isRequired,x: PropTypes.number,y: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),};export default DemoOne;

这里我们引入了三次子组件

我们先看看子组件中返回的children是什么

React中怎么实现插槽

如果我们要控制每个位置渲染不一样的插槽内容

方式一 是使用数组的形式 但是无法保证每次传入的都是多个插槽值

这时需要使用React.Children 对象中提供的额外方法 对props.children做处理: 其上有count\forEach\map\toArray等方法

在这些方法内部 已经对children做了各种形式的处理

我们可以直接使用

import React from "react";const DemoOne = function DemoOne(props) {let { title, x, children } = props;if (!children) {children = [];} else if (!Array.isArray(children)) {children = [children];}console.log(children);return (<div className="demo-BOX">{children[0]}{children[1]}</div>);};export default DemoOne;

React中怎么实现插槽

具名插槽

当我们在父组件中对要插入的内容设置上名字后 想要依据不同的名字 渲染在不同的位置 并且顺序也不同时 我们可以采用具名插槽的方式

这里我们设置了footer与header

import React from "react";import ReactDOM from "react-dom/client";import DemoOne from "./views/DemoOne";const root = ReactDOM.createRoot(document.getElementById("root"));root.render(<><DemoOne title="我是标题" x={10}><span slot='footer' >哈哈哈</span><span slot='header' >呵呵呵</span></DemoOne><DemoOne title="嘿嘿嘿"><span>嘿嘿嘿</span></DemoOne><DemoOne title="哈哈哈" /></>);

我们可以先使用React.Children.toArray() 将children都变为数组形式

因为传递进来的插槽信息 都是编译为virtualDOM后传递进来的 而不是传递的标签

所以我们可以直接通过.语法来获取到props对象的slot属性

这里定义三个数组用来存放 header footer 与 default

import React from "react";const DemoOne = function DemoOne(props) {let { title, x, children } = props;children = React.Children.toArray(children);let headerSlot = [],footerSlot = [],defaultSlot = [];children.forEach((child) => {//传递进来的插槽信息 都是编译为virtualDOM后传递进来的 而不是传递的标签let { slot } = child.props;if (slot === "header") {headerSlot.push(child);} else if (slot === "footer") {footerSlot.push(child);} else {defaultSlot.push(child);}});return (<div className="demo-BOX">{headerSlot}<br /><h3 className="title">{title}</h3><span>{x}</span><br />{footerSlot}</div>);};export default DemoOne;

React中怎么实现插槽

以上就是“React中怎么实现插槽”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: React中怎么实现插槽

本文链接: https://lsjlt.com/news/353579.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • React中怎么实现插槽
    今天小编给大家分享一下React中怎么实现插槽的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。React中实现插槽设计插槽在R...
    99+
    2023-07-05
  • Vue插槽怎么实现
    这篇文章主要介绍“Vue插槽怎么实现”,在日常操作中,相信很多人在Vue插槽怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue插槽怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!一、样例代...
    99+
    2023-07-04
  • React中实现插槽效果的方案详解
    目录React实现插槽children实现插槽props实现插槽React实现插槽 在开发中,我们抽取了一个组件,但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定...
    99+
    2024-04-02
  • Vue和React的插槽怎么使用
    今天小编给大家分享一下Vue和React的插槽怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。插槽,在React中没找...
    99+
    2023-06-27
  • React实现类似于Vue中的插槽的项目实践
    目录搭建项目实现方式1实现方式2最终效果展示最近刚开始接触React,感觉React比Vue更灵活一些,但是感觉代码确实维护的时候可读性也没有Vue好(可能是因为我太菜了),Vue中...
    99+
    2024-04-02
  • Angular中插槽怎么用
    这篇文章将为大家详细讲解有关Angular中插槽怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Angular插槽的使用使用ng-content 主要借助于select如果什么都不填直接使用<n...
    99+
    2023-06-14
  • Vue3插槽怎么用
    这篇文章主要为大家展示了“Vue3插槽怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue3插槽怎么用”这篇文章吧。一、v-slot 介绍v-slot 只能用在 template 或组件上...
    99+
    2023-06-22
  • Vue中的插槽怎么使用
    这篇“Vue中的插槽怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue中的插槽怎么使用”文章吧。默认插槽首先做一个...
    99+
    2023-06-30
  • Vue中的匿名插槽与具名插槽是什么
    这篇文章将为大家详细讲解有关Vue中的匿名插槽与具名插槽是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。slot又名插槽,是Vue的内容分发机制,组件内部的模板引擎使用slot元素作为承载分发内容的出...
    99+
    2023-06-21
  • Vue插槽的实现原理是什么
    这篇文章主要介绍“Vue插槽的实现原理是什么”,在日常操作中,相信很多人在Vue插槽的实现原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue插槽的实现原理是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
  • 浅谈Vue插槽实现原理
    目录一、样例代码二、透过现象看本质三、实现原理四、父组件编译阶段五、父组件生成渲染方法六、父组件生成VNode七、子组件状态初始化八、子组件编译阶段九、子组件生成渲染方法十、使用技巧...
    99+
    2024-04-02
  • vue插槽slot怎么用
    这篇文章给大家分享的是有关vue插槽slot怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言Vue的slot插槽,可以从字面意思来了解用途,占用占坑的意思,既然是占坑肯定...
    99+
    2024-04-02
  • 怎么用Vue命名插槽创建多个模板插槽
    本篇内容介绍了“怎么用Vue命名插槽创建多个模板插槽”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Vue ...
    99+
    2024-04-02
  • Vue3插槽Slot的实现原理是什么
    这篇文章主要介绍了Vue3插槽Slot的实现原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3插槽Slot的实现原理是什么文章都会有所收获,下面我们一起来看看吧。Vue官方对插槽的定义Vue 实现...
    99+
    2023-07-02
  • Vue3插槽Slot实现原理详解
    目录Vue官方对插槽的定义Slot到底是什么如何使用插槽回顾组件渲染的原理插槽的初始化原理解析插槽中的内容作用域插槽原理具名插槽原理默认内容插槽的原理Vue官方对插槽的定义 Vue ...
    99+
    2024-04-02
  • Vue插槽slot怎么使用
    这篇文章主要讲解了“Vue插槽slot怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue插槽slot怎么使用”吧! 一、插槽的含义 插槽 sl...
    99+
    2024-04-02
  • Vue中的插槽是什么及怎么用
    这篇文章主要介绍了Vue中的插槽是什么及怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中的插槽是什么及怎么用文章都会有所收获,下面我们一起来看看吧。在 Vue 中,插槽是个很强大的功能,它可以使封装...
    99+
    2023-06-30
  • Vue中插槽slot有什么用
    这篇文章主要为大家展示了“Vue中插槽slot有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中插槽slot有什么用”这篇文章吧。什么是插槽?我们知道在Vue中 Child 组件的标...
    99+
    2023-06-15
  • Vue中slot插槽有什么用
    小编给大家分享一下Vue中slot插槽有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间...
    99+
    2023-06-25
  • vue中的插槽是什么意思
    这篇文章主要为大家展示了“vue中的插槽是什么意思”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中的插槽是什么意思”这篇文章吧。一、认识插槽Slot前面我们会通过props传递给组件一些数...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作