zoukankan      html  css  js  c++  java
  • vue 全局插槽 全局插座

    场景:

      slot 能够让父组件内容插入到子组件中,但是子孙组件不能够使用slot直接插入内容。在弹窗的时候,全屏弹窗需要直接在组件最上层显示,如果父组件级别不够,弹出就可能不是全屏的。

    知识点:

      1: aa 为组件 。父组件中<aa>我是子组件的slot</aa> ,子组件中console.log(this.$slots) // [Vnode]  打印的虚拟dom含有text:“我是子组件的slot”。尽管那句话不会渲染出来,但是它是存在在子组件slot中的,如果slot没有命名,默认为default

      2:vm.$forceUpdate()能够强制刷新组件。 

    思路:

      组件a 中slot内容全部返回到组件b中,渲染成组件b的内容.

    应用:

      上层组件 : <global-slot />

      任何子孙组件: <global-plug>这儿的任何内容会被显示在global-slot中,且这儿不会显示 </global-plug>  注:global-plug组件的this.$slots.default 就是虚拟dom

    //global-blug.js

    export default { install(Vue) { //引入该文件后直接Vue.use let plug = {}, slot = {} Vue.component("global-plug", { // 创建插槽 created() { slot = this // 将此组件this保存到起来 }, render(createElement) { // 当运行render函数时,强制刷新 global-slot 组件 因为global-slot组件的render函数会先运行。那时候slot是没有值的 plug.$forceUpdate() } }) Vue.component("global-slot", { // 创建插座 render(createElement) { plug = this   //将此组件this保存起来 return slot.$slots && slot.$slots.default[0] // 将上面的插槽组件的slot虚拟dom值返回到插座中来。 } }) } }

     升级:

      在插座和插槽组件props 中传入属性,根据此属性的值,确认对应的插座和插槽。就如命名slot一样。

  • 相关阅读:
    必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。解决方法
    使用NPOI导出导入导出Excel
    使用jquery ajaxForm提交表单
    VS2013创建Windows服务
    mysql查询锁表及解锁
    selenium学习笔记(1)
    进程基本知识
    多任务原理
    数据转化之JSON
    安装Treserocr遇到的问题
  • 原文地址:https://www.cnblogs.com/gsgs/p/7778193.html
Copyright © 2011-2022 走看看