vue3 新特性总结

Vue2 到 Vue3 最直观的改变就是 Composition API——几乎所有的 Vue2 options 方法都被放到了 setup 函数里。
就是从基于对象的编程(OOP)转向了函数式编程(FP)。

创建方式

首先创建方式发生了改变

import { createApp } from "vue"; 
 createApp(App)
Teleport

可以改变它包含的html渲染的节点位置,例如:下边的div将会渲染到body下边

<teleport to="body">
	<div>1111111</div>
</teleport>
reactive

返回对象的响应式副本。
创建响应式对象,针对的主要是引用类型数据

const state = reactive({
  foo: 1,
  bar: 2
})

const stateAsRefs = toRefs(state)

如果对reactive采用了解构,那它将失去响应式,可以用torefs

function useFeatureX() {
  const state = reactive({
    foo: 1,
    bar: 2
  })

  // 逻辑运行状态

  // 返回时转换为ref
  return toRefs(state)
}
export default {
  setup() {
    // 可以在不失去响应性的情况下破坏结构
    const { foo, bar } = useFeatureX()

    return {
      foo,
      bar
    }
  }
}
ref

接受一个内部值并返回一个响应式且可变的 ref 对象
创建响应式对象,主要针对的是基本类型的数据
ref对象需要通过它的.value属性来访问

const count = ref(0)
console.log(count.value) // 0
setup函数

组合式 API,在创建组件之前执行
参数 props, context 上下文,是一个普通的 JavaScript 对象,它暴露三个组件的 property

export default {
  setup(props, context) {
    // Attribute (非响应式对象)
    console.log(context.attrs)

    // 插槽 (非响应式对象)
    console.log(context.slots)

    // 触发事件 (方法)
    console.log(context.emit)
  }
}

组合是api生命周期对应表,需要引入
例如: import { onMounted } from ‘vue’
onMounted(()=>{})执行

beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeUnmount -> onBeforeUnmount
unmounted -> onUnmounted
errorCaptured -> onErrorCaptured
renderTracked -> onRenderTracked
renderTriggered -> onRenderTriggered

在 setup() 内部,this 不会是该活跃实例的引用,需注意

watchEffect与watch

watchEffect在响应式地跟踪其依赖项时立即运行一个函数,并在更改依赖项时重新运行它。

const count = ref(0)

watchEffect(() => console.log(count.value))
// -> logs 0

setTimeout(() => {
  count.value++
  // -> logs 1
}, 100)

filter

官方取消了过滤器,推荐使用调用函数的方式处理

响应式原理机制发生了改变

Vue2.0响应式原理机制 - defineProperty
Vue3.0数据响应机制 - Proxy

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值