Vue3.0再不学就out了!来跟我一起学,含集成ts、router、vuex等使用方法

举报
前端老实人 发表于 2021/11/28 19:00:32 2021/11/28
【摘要】 1. 如何在vue中集成tsvue-cli 创建项目时选择ts依赖yarn add typescript 进行安装vite 安装tsvite—>vue/vue-ts就可以直接写ts代码了可以学习下typescript—》点击蓝色字体跟我一起快速入门ts哦学了typescript之后再用ts的写法来写vue组件代码 2. composition API 中 使用vue-routermian....

1. 如何在vue中集成ts

vue-cli 创建项目时选择ts依赖

  • yarn add typescript 进行安装

vite 安装ts

2. composition API 中 使用vue-router

mian.js中:
我们在vue2中常用到的Vue对象,在vue3中由于直接使用了createApp方法“消失”了,但实际上使用createApp方法创造出来的app就是一个Vue对象,在vue2中经常使用到的Vue.use(),在vue3中可以换成app.use()正常使用;在vue3的mian.js文件中,使用vue-router直接用app.use()方法把router调用了就可以了。

由于在setup中不能使用this, 因为setup在初始化之前执行的,所以setup无法访问this
setup是一个独立的钩子函数,不会依赖vue实例组件,如果用到外部函数,都需要从外部获取
不能再直接访问 this. r o u t e r t h i s . router 或 this. route 作为代替,我们使用useRouter和useRoute函数

  • 2.1创建路由
// 引用两个函数,一个是创建路由对象,一个是路由模式
import {createRouter,createWebHashHistory} from 'vue-router'

// 导出创建路由对象
export default createRouter({
  // 设置路由模式
  history:createWebHashHistory(),
  // 路由信息对象
  routes
})
  • 引用
 import {useRouter,useRoute} from 'vue-router'
  • 2.2 使用
  setup(props) {
    const router = useRouter()   //等同于this.$router
    const route = useRoute()   //等同于this.$router
  }

3. composition API 中 使用vuex

  • vuex也是无法使用this.$store
    • 2.1 引用
 import {useStore} from 'vuex'
  • 2.2 使用
  // 在组合api中是不支持辅助函数
  setup() {
    const store = useStore()
// 创建响应式对象,接受一个普通对象,返回一个响应式数据对象
    const data = reactive({
      iscount:computed(()=> store.state.count*2),
      doubelCount:computed(()=> store.getters.doubel)
    })
    // 上下都可
    // const iscount = computed(()=> store.state.count*2)
    // 提交mutations
    const cAdd=()=>{
      store.commit('add')
    }
    const cAddVal=(val)=>{
      store.commit('addVal',val)
    }
    const asyncAdd = ()=>{
      store.dispatch('asyncAdd')
    }
  return{
        ...toRefs(data),
        cAdd,
        cAddVal,
        asyncAdd
      }
  },

快速入门Vue3.0!跟我入门第一天,一起来看看跟vue2的区别
前端老实人 发表于 2021/11/25 16:58:13 22 0 1编辑删除
【摘要】 vue3.0可以有多个根节点 1.setup函数的用法,可以代替vue2中的data和methos属性,compued属性,都是直接写在setup中就可以了//在script上加setup属性,组件编译过程中的代码运行是在setup函数中,所有es模块导出都认为暴露给上下文的值,并且包含在setup()返回对象中// 定义setup// setup是组件使用Composition API的…
vue3.0可以有多个根节点
1.setup
函数的用法,可以代替vue2中的data和methos属性,compued属性,都是直接写在setup中就可以了

//在script上加setup属性,组件编译过程中的代码运行是在setup函数中,所有es模块导出都认为暴露给上下文的值,并且包含在setup()返回对象中

// 定义setup
// setup是组件使用Composition API的入口函数
// 接收两个参数:props(接受组件props的属性),context(上下文对象,包含一些属性attrs,slots,emit)
// ,这些属性在vue2中需要通过this才能访问
setup(props,context) {
console.log(‘1’);
// 在vue3的setup中不能访问vue2的this对象,只能在setup中通过context访问this中常用的几个属性
// console.log(this.$emit());
}
2.ref
定义一个响应式的数据对象,如果要template中使用数据对象,必须return出去

ref:可以定义:字符串,数组,数组对象,对象 -如果访问ref中的属性数据,必须通过属性名,value
// composition API
// data,methods,computed,watch都是写在setup中
setup(){//在setup里定义数据一定要返回出去return
// 直接真么定义不是响应式的数据
// const count = 0
// 创建响应式数据对象count ,初始值为0
const count = ref(0)
const list = ref([‘特仑苏’,‘追梦’])
// 定义数组对象
const user = ref([
{id:101,name:‘特仑苏’},
{id:102,name:‘追梦’},
])
// 在这里面写函数不需要写逗号
let updUser=()=>{
// 修改数据
user.value[0].name=“Terrance”
}
let getCount = ()=>{
// 如果要访问ref()创建出来响应式数据对象的值,必须通过value属性才可以
console.log(count.value);
}
}
3.reactive
也是用来定义响应式数据对象,类似vue2x中的data()返回的响应式对象

ref 与 reactive 这两种方法定义的都是响应式对象
ref:比较推荐定义基本数据类型
reactive: 推荐定义复杂数据类型时使用
4.torefs:
解构响应式对象的数据

把一个响应式对象转换成普通对象,普通对象的属性都一个ref,和响应式的属性一一对应
5.computed
计算属性 和vue2中的计算属性用法一样,computed写在setup函数中

setup(){//在setup里定义数据一定要返回出去return
// reactive也是创建响应式对象的
// reactive创建的响应式数据对象,类似vue2x中的data()返回的响应式对象
const data= reactive({
test:‘测试’,
user:{
name:‘木道人’,
sex:‘男’
},
list:[‘a’,‘b’,‘c’]
})
// 访问reactive时可以直接访问不用别的参数
console.log(data.test);
// 创建一个响应式对象user
const user = reactive({
firsName:’’,
lastName:’’
})
// 根据user的值,创建一个响应式的计算属性fullName
// 他会根据依赖自动计算返回一个新的响应式数据(ref)
const fullName = computed(()=>{
return user.firsName + ‘’ +user.lastName
})

    const  getFullName=()=>{
      console.log(fullName.value);
    }
return{
  // 结构响应式数据对象
  // 用...扩展运算符解构响应式对象数据是不可行的,
  // 因为解构后就变成了普通变量,就没有了响应式的能力
  // ...data
    // toRefs把一个响应式的对象转换成普通对象,对data进行了包装,
    // 再使用...拓展符的方式,成为响应式的解构
  ...toRefs(data),
  ...toRefs(user),
  // 计算属性
  fullName,
  getFullName
}

}

最后

如果对您有帮助,希望能给个👍评论收藏三连!

博主为人老实,无偿解答问题哦❤

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。