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)}




相关文章
|
1月前
|
JavaScript 前端开发 开发者
vue的slot插槽详解
vue的slot插槽详解
34 0
|
15天前
|
JavaScript
vue的插槽(slot)
vue的插槽(slot)
|
26天前
|
JavaScript
|
1月前
Vue3系列教程之插槽slot详解
Vue3系列教程之插槽slot详解
19 0
|
1月前
|
JavaScript
Vue插槽(slot)的使用
Vue插槽(slot)的使用
18 1
|
10月前
|
JavaScript
Vue插槽 slot 标签
Vue插槽 slot 标签
103 0
|
1月前
|
JavaScript
VUE组件: 请解释Vue的插槽(slot)是什么?
VUE组件: 请解释Vue的插槽(slot)是什么?
31 1
|
1月前
|
JavaScript 前端开发
Vue之插槽Slot理解
Vue之插槽Slot理解
25 0
|
1月前
|
JavaScript
对于Vue Slot插槽的讲解
对于Vue Slot插槽的讲解
|
6月前
|
JavaScript API
vue中slot插槽
vue中slot插槽
28 0