react-05-slot-插槽

简介: slot 插槽 在 vue里就常用react的插槽其实也一样还是模拟一个消息框 类似 elemetui 或者 iview message组件的形式

1. 前言


slot 插槽 在 vue里就常用

react的插槽其实也一样

还是模拟一个消息框 类似 elemetui 或者 iview   message组件的形式


2. 不用插槽之前

核心代码


function Message(props) {
            return (
                <div className="msgBox">
                    <div> {props.txt}  <span> x </span> </div>
                </div>
            )
        }
        ReactDOM.render((<div>
           <Message  txt="这是一个消息提示" />
        </div>), app)


简单样式


.msgBox {
            background-color: #67C23A;
            padding: 5px 20px;
            color: #FFF;
            border-radius:5px;
        }
 .msgBox span{
            float:right;
            color: #DCDFE6;
        }

简易效果

I68I5N%%GZGK_$)_G]_SR`P.png

1.png


3.slot


注意看看这个 参数 props


function Message(props) {
            console.log("瞅瞅这个props 到底是啥:",props)
            return (
                <div className="msgBox">
                    <div> {props.children} <span> x </span></div>
                </div>
            )
        }
        ReactDOM.render((<div>
           <Message>  这确实是个消息提示 </Message>
        </div>), app)

props

P%EZ6D7ZQ]OWX1L]RLCJFAS.png

1.png

不加标签 直接就是 字符串内容 {children: "XXXXX "}


4. 一个标签


核心代码


function Message(props) {
            console.log("瞅瞅这个props 到底是啥:",props)
            return (
                <div className="msgBox">
                    <div> {props.children} <span> x </span></div>
                </div>
            )
        }
            var title = "这是个消息"
        ReactDOM.render((<div>
           <Message><p>{title}</p></Message>
        </div>), app)

props

4(Z_6L)_~FK8$0{]SVKPEX0.png

1.png

单个标签是对象     {children: {…}}



5. 多个标签


核心代码


function Message(props) {
            console.log("瞅瞅这个props 到底是啥:",props)
            return (
                <div className="msgBox">
                    <div> 
                     <h1> {props.children[0]}</h1>  
                          {props.children[1]}
                        <span> x </span>
                        </div>
                </div>
            )
        }
            var title = "温馨提示"
        ReactDOM.render((<div>
           <Message>
            <p>{title}</p>
            <p> 这是一个好消息</p>
            </Message>
        </div>), app)

界面效果 以及 props

SRTI9)S9`O32IZJLOHWE4`4.png

1.png

多个是数组     {children: Array(2)}


6. children自动展开


如果不需要额外的样式,可以直接写, 因为这个数组在 react 里会自动展开


function Message(props) {
            console.log("瞅瞅这个props 到底是啥:",props)
            return (
                <div className="msgBox">
                    <div> 
                     {props.children}
                        <span> x </span>
                    </div>
                </div>
            )
        }



7.总结



children
      不加标签 直接就是 字符串内容 {children: " xxx "}
      单个标签是对象     {children: {…}}
      多个是数组     {children: Array(2)}




相关文章
|
前端开发 JavaScript 开发者
react18【系列实用教程】组件 (2024最新版 | 含父子组件传值、兄弟组件传值、越层组件传值、“插槽“)
react18【系列实用教程】组件 (2024最新版 | 含父子组件传值、兄弟组件传值、越层组件传值、“插槽“)
286 2
react18 实现具名插槽
react18 实现具名插槽
242 0
|
2月前
|
缓存 前端开发 JavaScript
React Hooks深度解析与最佳实践:提升函数组件能力的终极指南
🌟蒋星熠Jaxonic,前端探索者。专注React Hooks深度实践,从原理到实战,分享状态管理、性能优化与自定义Hook精髓。助力开发者掌握函数组件的无限可能,共赴技术星辰大海!
React Hooks深度解析与最佳实践:提升函数组件能力的终极指南
|
7月前
|
缓存 前端开发 数据安全/隐私保护
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
283 68
|
7月前
|
缓存 前端开发 Java
在 React 中,组合组件和高阶组件在性能方面有何区别?
在 React 中,组合组件和高阶组件在性能方面有何区别?
260 67
|
7月前
|
前端开发 JavaScript 安全
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
297 62
|
10月前
|
移动开发 前端开发 API
React 音频播放器组件 Audio Player
本文介绍如何使用React创建音频播放器组件,涵盖核心功能如播放/暂停、进度条、音量控制和时间显示。通过HTML5 `&lt;audio&gt;` 元素和React的声明式状态管理,实现交互式音频播放。常见问题包括控件不响应、进度条无法更新和音量控制失灵,并提供解决方案。此外,还讨论了浏览器兼容性、异步错误处理和性能优化等易错点及避免方法。
731 123
|
9月前
|
前端开发 JavaScript
除了使用Route组件,React Router还有其他方式处理404错误页面吗
除了使用Route组件,React Router还有其他方式处理404错误页面吗
255 58
|
9月前
|
前端开发
React 中高阶组件的原理是什么?
React 中高阶组件的原理是什么?
242 57
|
9月前
|
前端开发 开发者
除了函数组件和类组件,React 还有其他创建组件的方式吗?
除了函数组件和类组件,React 还有其他创建组件的方式吗?
188 57