vue3快速上手(一)

vue3快速上手

本文旨在快速上手vue3的使用,关于原理上的东西可能会涉及的比较少

搭建工程

vue create 项目名称

这里使用的是vue-cli搭建工程,和vue2搭建工程类似,选择vue version为3x就行了。
最后等待…得到如下的目录结构
在这里插入图片描述

使用

vue3中删除了vue的构造函数,不再使用new Vue()来创建Vue实例,改换成了CreateApp,有利于treeshaking

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

setup,它是composition api的入口,运行在beforeCreate和created之前,所以无法获取data和method数据,里面return去的数据模板才能够使用

//app.vue
<template>
  <div>
    {{ count }}
  </div>
</template>

setup(){
    let count = 111;
    return {
      count,
    }
  }

运行界面中会显示111
ref,setup中的数据需要返回出去才能够被模板使用,但是返回出去的只是普通对象,里面的数据并不是响应式的,要让数据称为响应式需要ref进行包装
手动引入ref

import {ref} from 'vue'
setup(){
    let count = ref(111);
    return {
      count,
    }
  }

通过ref包装的对象就不再是普通对象了,对它进行赋值需要给它的value赋值

setup(){
    let count = ref(111);
    const increase = ()=>{
      count.value++;
    }
    return {
      count,
      increase,
    }
  }

除了上面的写法,也可以使用reactive进行包裹

setup(){
    const data = reactive({
      count:111,
      increase: ()=>{
      data.count++;
    }
    })
    const refData = toRefs(data);
    return {
      ...refData
    }
  }

其中reactive是一个函数,可以将普通对象转换为响应式数据,但是如果将reactive包装得到的data进行展开,触发increase不会让页面中的count进行更新,使用toRefs包装data,可以将数据转换为这种格式

{
  foo: Ref<number>,
  bar: Ref<number>
}

使用展开运算符之后触发increase会更新页面中的count值

watchEffect根据其中依赖的响应式数据的变化重新启用副作用,在组件卸载的时候停止,也可以根据返回值来进行手动的停止

//setup函数中
 watchEffect(()=>{
      console.log(count.value)
    })

每次更新count的值都会触发watchEffect

逻辑抽离
在vue2x中进行逻辑抽离复用可以用使用mixin,但是vue3中逻辑抽离比mixin更加优雅,有点类似于react中的hooks.

//抽离出来的逻辑
import { ref, watchEffect } from "vue";
import * as todoStorage from "../util/todoStorage";

export default function useTodoList() {
  const todosRef = ref(todoStorage.fetch());
  window.todosRef = todosRef; // 测试
  watchEffect(() => {
    todoStorage.save(todosRef.value);
  });

  return {
    todosRef,
  };
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值