• 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 并且没有处理可能返回数组的情况,那么可能会需要进行相应的修正。

  • 相关阅读:
    475. Heaters
    69. Sqrt(x)
    83. Remove Duplicates from Sorted List Java solutions
    206. Reverse Linked List java solutions
    100. Same Tree Java Solutions
    1. Two Sum Java Solutions
    9. Palindrome Number Java Solutions
    112. Path Sum Java Solutin
    190. Reverse Bits Java Solutin
    202. Happy Number Java Solutin
  • 原文地址:https://www.cnblogs.com/gaoguowen/p/10362134.html
Copyright © 2020-2023  润新知