发布于2021-05-30 11:53 阅读(1809) 评论(0) 点赞(11) 收藏(1)
1.性能上提升1.3-2倍
2.按需加载 和 compsition api(组合api)
在 Vue 3 中,改变全局 Vue 行为的 API 现在被移动到了由新的 createApp 方法所创建的应用实例上。
vue3.0中使用createApp 来创建vue实例
import { createApp } from 'vue'
import App from './App.vue'
const app = createApp(App);
app.mount('#app');
main.js 下加载router、vuex
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
createApp(App).use(store).use(router).mount('#app')
1、简介
setup函数是vue3中专门为组件提供的新属性。
2、执行时机
创建组件实例,然后初始化props,紧接着就调用setup函数,会在beforeCreate钩子之前被调用。
3、模板中使用
如果setup返回一个对象,则对象的属性将会被合并到组件模板的渲染上下文。
4、如何使用
<template>
<div>
{{name}}
</div>
</template>
<script>
import { reactive } from "vue"
export default {
setup(props){
const state = reactive({
name:'abc'
})
return state
}
}
</script>
注意:在setup()函数中无法访问到this
1、简介
reactive()函数接收一个普通对象,返回一个响应式的数据对象
2、基本语法
按需导入reactive函数
import { reactive} from "vue"
创建响应式数据对象
const state = reactive({ id:1 })
3、定义响应式数据供template使用
1)按需导入reactive函数
import { reactive} from "vue"
2)在setup()函数中调用reactive()函数,创建响应式数据对象
setup(){
//创建响应式数据对象
const state = reactive({
name:'abc'
})
//setup函数中将响应式数据对象return出去供template使用
return state
}
3)在template中访问响应式数据
<template>
<div>
{{name}}
</div>
</template>
1、简介
ref()函数用来根据给定的值创建一个响应式的数据对象,ref()函数调用的返回值是一个对象,这个对象
上只包含一个value属性
2、基本语法
1)按需导入ref函数
import { ref } from "vue"
2)在setup()函数中调用ref()函数,创建响应式数据对象
setup(){
var c = ref(10); //初始化值为10
return {c}
}
3)在template中访问响应式数据
<template>
<div>
{{c}}
</div>
</template>
1、简介
toRefs()函数可以将reactive()创建出来的响应式对象,转换为普通对象,只不过这个对象上的每个属性
节点,都是ref()类型的响应式数据
2、基本语法
1)按需导入toRefs函数
import { reactive ,toRefs } from "vue";
2)...toRefs(state)创建响应式数据对象
setup(){
let state = reactive({id:10});
return {
...toRefs(state)
};
}
3)在template中访问响应式数据
<template>
<div>
<p>{{id}}</p>
</div>
</template>
1、简介
computed()用来创建计算属性,computed()函数的返回值是一个 ref 的实例
2、基本语法
1)按需导入computed()
import { reactive ,toRefs ,computed} from "vue";
2)在setup()函数中调用computed()函数
setup(){
let state = reactive({
id:10,
n1:computed(()=>state.id+1) //计算属性的方式
});
}
3)在template中访问响应式数据
<template>
<div>
<p>{{n1}}</p>
</div>
</template>
1、简介
watch() 函数用来监视某些数据项的变化,从而触发某些特定的操作
2、基本语法
1)按需导入watch()
import { reactive ,toRefs ,watch} from "vue";
2)在setup()函数中调用watch()函数
setup() {
let state = reactive({
id:10,
});
watch(() => console.log(state.id))
},
1、基本语法
1)新版的生命周期函数,可以按需导入到组件中,且只能在 setup() 函数中使用
import { onMounted, onUpdated, onUnmounted} from "vue";
2)在setup()函数中调用computed()函数
setup(){
onMounted(() => {
console.log('mounted!')
})
onUpdated(() => {
console.log('updated!')
})
onUnmounted(() => {
console.log('unmounted!')
})
}
2、新旧对比
beforeCreate -> use setup()
created -> use setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
errorCaptured -> onErrorCaptured
1、简介
provide()和 inject()可以实现嵌套组件之间的数据传递。这两个函数只能在 setup()函数中使用。父级组
件中使用 provide()函数向下传递数据;子级组件中使用 inject()获取上层传递过来的数据。
2、基本语法
父组件:
在setup()函数中调用provide()函数
setup() {
provide('globalColor', 'red')
},
子组件:
在setup()函数中调用inject()函数
setup(props){
const state = reactive({
color : inject("globalColor")
})
return state
}
现在我们安装 vue-router 版本的时候,默认还是安装的 3.x 版本的,由于 vue3 的更新发生很大的变
化,所以为了兼容处理,vue-router 也将发布最新版 4.x 版本了。
1、创建方式
利用createRouter 用来创建router对象
import { createRouter } from 'vue-router'
const router = createRouter({
routes
})
2、路由模式
createWebHashHistory路由模式路径带#号
createWebHistory路由模式路径不带#号()
import { createRouter,createWebHashHistory } from 'vue-router'
const router = createRouter({
history: createWebHashHistory(),
routes
})
1、创建方式
创建 store 容器实例
import { createStore } from 'vuex'
const state = {
flag:true
};
var getters = {
getFlag(state){
//具体的处理
}
}
const actions={
CHANGEFLAG({commit}){
commit('CHANGEFLAG');
}
};
const mutations = {
CHANGEFLAG(state){
//具体的处理
}
};
const store = createStore({
state,
getters,
actions,
mutations
})
//导出store对象
export default store;
2、组件中的使用
import { useStore } from "vuex"; //导入vuex
export default {
props:{
name:String
},
setup(props) {
let store = useStore(); //定义store
const state = reactive({});
return {
...toRefs(state),
store
};
},
}
原文链接:https://blog.csdn.net/hjhfreshman/article/details/117255741
作者:麻辣小龙虾
链接:http://www.qianduanheidong.com/blog/article/116085/76fb9188dd7e050c0415/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!