vue 3.0一些理解

时间:2021-02-05 10:28:53   收藏:0   阅读:0

性能优化

 

  1. 传统:组件 update时,整个vdom树需要重新创建,然后遍历进行diff, update
  2. 新的更新策略: block tree
  3. 区分动态节点和静态节点
  4. 基于动态节点指令(v-if, v-for,  {{ name }}等)更新        
  1. slot默认编译为函数
  2. vnode的创建函数保持参数一致化
  3. 编译时生成vnode的类型标记

    新增composition-api,

    https://composition-api.vuejs.org/

    可以在vue2.x的项目中通过安装@vue/composition-api包来使用composition-api.

    • reactive:reactive的作用是将对象包装成响应式对象——通过 Proxy代理后的对象。
    • ref:由传入值返回一个响应式的、可变的且只有value一个属性的ref对象。

    当ref被作为render context被返回,在template中使用该ref对象时,自动获取内部的值,不需要使用.value属性。

    <template>
      <div>{{ count }}</div>
    </template>
    
    <script>
      export default {
        setup() {
          return {
            count: ref(0)
          }
        }
      }
    </script>
    

    当ref对象被作为属性,传入响应式对象reactive时,会自动获取其内部的值(表现得像普通的属性值,而非对象)。

const count = ref(0)
const state = reactive({
  count
})

console.log(state.count) // 0

state.count = 1
console.log(count.value) // 1

  

reactive属性绑定新的ref对象后,原来ref的value不变(断开了)。

const otherCount = ref(2)

state.count = otherCount
console.log(state.count) // 2
console.log(count.value) // 1
其他情况获取ref时需要带.value

onst arr = reactive([ref(0)])
// need .value here
console.log(arr[0].value)

const map = reactive(new Map([[‘foo‘, ref(0)]]))
// need .value here
console.log(map.get(‘foo‘).value)
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!