vue3 一些关键属性

2023-06-02,,

环境搭建

尤大开发了一个项目构建工具vite

 npm init vite-app <project-name>
cd <project-name>
npm install
npm run dev

创建实例

之前是new Vue({})的形式来创建实例,vue3添加了一个新的方法--->creatApp

import {createApp} from 'vue'
const app =createApp({}) ////////////////////////
import {
createApp
} from 'vue'
import App from './App.vue'
const app = createApp(App)
app.mount('#app')
<template>
<!-- 可以有多个节点 -->
<h1>hello world</h1>
<h1>x:{{ position.x }} y:{{ position.y }}</h1>
</template> <script>
import { reactive } from 'vue';
// import HelloWorld from './components/HelloWorld.vue'; export default {
name: 'App',
// components: {
// HelloWorld
// },
setup() { //数据入口
let position = reactive({}); //构建响应式对象
window.addEventListener('mousemove', e => {
position.x = e.pageX;
position.y = e.pageY;
// console.log(position);
});
return { position }; //最后要暴露出这个数据
}
};
</script>

选项式api 与 组合式api

解决逻辑关注点分散的问题

vue2:选项式api,

vue3 :组合式api,写在setup()中,setup中没有this

export default {
name: 'App',
// components: {
// HelloWorld
// },
setup() { //数据入口
console.log('setup中的this为',this) //输出: setup中的this为 undefined
let position = reactive({}); //构建响应式对象
window.addEventListener('mousemove', e => {
position.x = e.pageX;
position.y = e.pageY;
// console.log(position);
});
return { position }; //最后要暴露出这个数据
}
};

ref

创建一个响应式变量

const time = ref(0); //创建值类型的变量 number  string

reactive

vue2中存在一个Vue.observable方法,用来返回一个可响应的对象,在vue2中,data函数返回一个对象,vue内部会用Vue.observable 来处理

const position = reactive({
//创建响应对象
x: 0,
y: 0,
info: computed(() => {
return `当前位置在 X: ${position.x} Y:${position.y}`;
})
});

toRef

可以用来为源响应式对象上的 property 性创建一个 ref。然后可以将 ref 传递出去,从而保持对其源 property 的响应式连接。

const state = reactive({
foo: 1,
bar: 2
})
//三种方式创建变量
const fooToRef = toRef(state, "foo"); // fooToRef++ 可以响应,state.foo同台改变
const fooRef = ref(state.foo); //无现象 stata不变
let foo = state.foo;//无现象 stata不变

通过上面的小测试可以看到,toRef是将变量与响应式对象建立引用关系,变量改变时可以改变源响应对象

toRefs

参考地址

作用:让props中的值变成响应式的

传入的props是响应式的,会实时更新,传递给setup就能直接使用

export default {
props: {
title: String
},
setup(props) {
console.log(props.title)
}
}

每次调用props中的属性都需要用 props.[属性名]的形式,书写复杂,考虑到es6的解构赋值

但是使用es6解构会消除prop的响应性,所以使用toRefs来简化写法

props:{
user:{
type:String
}
}
import{toRefs} 'vue' const { user } = toRefs(props)

watch

参考

watchEffect

占坑

生命周期

选项式 API Hook inside setup
beforeCreate Not needed*
created Not needed*
beforeMount onBeforeMount
mounted onMounted
beforeUpdate onBeforeUpdate
updated onUpdated
beforeUnmount onBeforeUnmount
unmounted onUnmounted
errorCaptured onErrorCaptured
renderTracked onRenderTracked
renderTriggered onRenderTriggered

vue3 一些关键属性的相关教程结束。

《vue3 一些关键属性.doc》

下载本文的Word格式文档,以方便收藏与打印。