vue3.0 的基本使用

2022-06-20  本文已影响0人  嗯o哼

一、生命周期

// 在beforeCreate执行前执行,组件实例创建前,执行
beforeCreate -> 请使用 setup()
created -> 请使用 setup()
// 挂载DOM前执行
beforeMount -> onBeforeMount
// 挂载DOM后执行
mounted -> onMounted
// 更新组件前执行
beforeUpdate -> onBeforeUpdate
// 更新组件后执行
updated -> onUpdated
// 卸载销毁前 执行
beforeDestroy -> onBeforeUnmount
// 卸载销毁后执行
destroyed -> onUnmounted
errorCaptured -> onErrorCaptured

二、setup

3.0之后的代码基本上都是在setup中完成的,它是一个函数,在组件实例创建前执行,所以,不能使this关键字, 模板中需要的数据、函数在setup中返回

1. 创建基本的数据

<script>
 export default{
    name: 'App',
     setup(){
       // 创建一个普通数据,可以在模板中直接使用
        const msg = 'hi vue3'
      // 创建一个函数,可以在模板中进行调用
        const say  = ()=> {
            console.log('hi vue3')
         }
           return { msg }
      }
}
</script>

2.创建响应式数据,可以使用reactive、ref、toRef、toRefs

<script>
  exprot default{
    name:'App',
    setup(){
      // 1. 创建一个响应式数据,数据改变,页面显示的内容也发生变化
      const obj  = reactive({
        name:'lisi',
        age:18
      })
    // 修改的时候,可以直接修改对象的属性
     const updateName = ()=>{
       obj.name = 'zhangsan'
      }
    // 2. 创建一个响应式数据,可以直接在模板中使用name
    const name = toRef(obj,'name')
     
    // 2.2 多个响应式数据
    const obj2 = toRefs(obj)
     // 3. 创建一个简单的响应式数据
     const count= ref(0)
    // toRef、toRefs,ref会将数据封装成一个对象,值保存在value中,如果需要修改值,可以通过修改value实现
     const updateRef = ()=>{
      name.value = 'wangwu'
      count.value++
      }
    return { // ...0bj2 包含了obj对象的每个数据,可以直接使用
    obj,updateName,name,...obj2,count,updateRef
    }
  }
</script>

3. 计算属性

计算属性是通过一定规则计算出来的,是只读,无法修改的
可以通过computed进行创建

<script>
  export default{
  name:'App',
  setup(){
  const age = ref(18)
  // 1. computed内可以接收一个回调函数,函数内部就是具体的逻辑规则
  const newAge = computed(()=>{
      return age.value + 1
    })
  //2. computed内还可以接受一个对象,变相的实现修改计算属性的目的,可以和v-model进行绑定
  const newAge2 = computed({
    // get函数,获取计算属性的值
    get(){
      return age.value + 1
    },
    // set函数,接受一个参数value,无法直接修改newAge2,但是可以通过修改age变相的修改newAge2的值
    set(value){
      age.value = value -1
    }
  })
  }
}
return {
  age,newAge,newAge2
}
</script>
上一篇下一篇

猜你喜欢

热点阅读