zoukankan      html  css  js  c++  java
  • vue 2.6 更新变动

    [原文链接 ]

    Slots:新语法,性能改进为3.0做准备
    改用 v-slot 指令

    // 默认插槽
    // 插槽的缩写语法不能和具名插槽混用,因为它会导致作用域不明确
    
    <baz v-slot ="baz">
    {{baz}}
    </ baz >
    
    // 嵌套默认插槽
    // 组件提供的范围变量也在该组件本身上声明
    // 当被提供的内容只有默认插槽时,组件的标签才可以被当作插槽的模板来使用。
    // 内部工作原理是将你的插槽内容包括在一个传入单个参数的函数里。
    
    <foo v-slot="foo">
    <bar v-slot="bar">
    <baz v-slot="baz">
    {{ foo }} {{ bar }} {{ baz }}
    </baz>
    </bar>
    </foo>
    
    
    // 具名域槽
    <my-name>
    <template v-slot:one="{ msg }">
    {{ msg }}
    </template>
    </my-name>
    
    // 混用插槽
    // v-slot 只能添加在一个 <template> 上
    
    <foo>
    <template v-slot:one="one">
    <bar v-slot="bar">
    <div>{{ one }} {{ bar }}</div>
    </bar>
    </template>
    
    <template v-slot:two="two">
    <bar v-slot="bar">
    <div>{{ two }} {{ bar }}</div>
    </bar>
    </template>
    </foo>
    
    // 动态插槽名
    // 动态指令参数也可以用在 v-slot
    <base-layout>
      <template v-slot:[dynamicSlotName]>
        ...
      </template>
    </base-layout>
    
    // 具名插槽的缩写 
    // v-slot:header 可以被重写为 #header
    // 该缩写只在其有参数的时候才可用

    异步错误处理


    Vue的内置错误处理机制(errorCaptured钩子和全局errorHandler钩子),现在也捕获v-on处理程序内部的错误。

    建议使用async / await 异步函数隐式返回Promises

    export default {
    async mounted() {
    //如果在这里抛出异步错误,由errorCaptured和Vue.config.errorHandler捕获
    this.posts = await api.getPosts()
    }
    }

     动态指令参数
    指令参数现在可以接受动态JavaScript表达式
    动态参数值应该是字符串,但允许null作为一个明确指示应该删除绑定的特殊值,那将会很方便。任何其他非字符串值都可能出错,并会触发警告。(仅适用于v-bind和v-on)

    <div v-bind:[attr]="value"></div>
    //简写
    <div :[attr]="value"></div>
    
    <button v-on:[event]="handler"></button>
    //简写
    <button @[event]="handler"></button>
    
    <my-component>
    <template v-slot:[slotName]>
    Dynamic slot name
    </template>
    </my-component>
    //简写
    <foo>
    <template #[name]>
    Default slot
    </template>
    </foo>
    
    
    <div :[key + 'foo']="value"></div> //可能不会执行
    //使用
    <div :[`${key}foo`]="value"></div>

    编译警告位置信息

    大多数模板编译警告现在都带有源范围信息。

    显式创建独立活动对象
    引入了一个新的全局 API,可以用来显式地创建响应式对象:

    const reactiveState = Vue.observable({
    count: 0
    })
    //生成的对象可以直接用在计算属性 (computed property) 和渲染函数(render) 中,并会在被改动时触发相应的更新。

    服务器端渲染期间的数据预取(SSR)
    serverPrefetch钩子允许(而不是仅仅路线级组件)的任何部件的服务器端渲染期间预取数据,从而允许更灵活的使用和减少数据提取与路由器之间的耦合。
    像Nuxt这样的项目vue-apollo已经计划使用这个新功能简化他们的实现。

    重要的内部变化
       nextTick
    在2.5.0中,我们进行了内部调整,nextTick如果在v-on事件处理程序中触发更新,则会导致使用Macrotasks而不是Microtasks对更新进行排队。
    这最初的目的是修复一些浏览器边缘情况,但反过来又导致了许多其他问题。
    在2.6中,我们找到了原始问题的一个更简单的解决方案,它允许我们nextTick在所有情况下恢复一致地使用Microtasks。

    this.$scopedSlots现在的函数总是返回Arrays

    (此改动只影响使用 render 函数的用户)在 render 函数中,传入的 scoped slot 以函数的形式被暴露在 this.$scopedSlots 上面。

       在之前的版本中,这些函数会基于父组件传入的内容不同而返回单个 VNode 或是一个 VNode 的数组。

      这是当初实现时的一个疏漏,导致了 scoped slot 函数的返回值类型是不确定的。
      2.6 当中,所有的 scoped slot 函数都只会返回 VNode 数组或是 undefined。
      如果你的现有代码中使用了 this.$scopedSlots 并且没有处理可能返回数组的情况,那么可能会需要进行相应的修正。

  • 相关阅读:
    java 基础(Collections 工具类的常用方法)
    Java 基础( Map 实现类: Properties)
    Java 基础(Map)
    Java 基础(集合三)
    Java 基础(集合二)
    Java 基础(集合一)
    Java 基础(Annotation)
    CentOS7 系统 springboot应用启动脚本
    GenericObjectPool源码分析
    问题springboot项目启动报错
  • 原文地址:https://www.cnblogs.com/gaoguowen/p/10362134.html
Copyright © 2011-2022 走看看