You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<htmllang="en"><head><metacharset="UTF-8"><metaname="viewport" content="width=device-width, initial-scale=1.0"><metahttp-equiv="X-UA-Compatible" content="ie=edge"><title>Hello Vue3.0</title><style>
body,
#app {
text-align: center;
padding: 30px;
}
</style><scriptsrc="../../packages/vue/dist/vue.global.js"></script></head><body><h3>Template Refs</h3><divid='app'></div></body><script>const{ createApp, reactive, ref, isRef, toRefs, onMounted, onBeforeUpdate }=VueconstApp={template: ` <button @click='click'>count++</button> <div ref="count" style="margin-top: 20px">{{ count }}</div> `,setup(){constcount=ref(null);onMounted(()=>{// the DOM element will be assigned to the ref after initial renderconsole.log(count.value)// <div/>})click=()=>{count.value++;console.log("click count.value:",count.value)}return{
count,
click
}}}createApp(App).mount('#app')</script></html>
<htmllang="en"><head><metacharset="UTF-8"><metaname="viewport" content="width=device-width, initial-scale=1.0"><metahttp-equiv="X-UA-Compatible" content="ie=edge"><title>Hello Vue3.0</title><style>
body,
#app {
text-align: center;
padding: 30px;
}
</style><scriptsrc="../../packages/vue/dist/vue.global.js"></script></head><body><h3>Template Refs</h3><divid='app'></div></body><script>const{ createApp, reactive, ref, isRef, toRefs, onMounted, onBeforeUpdate }=VueconstApp={template: ` <div v-for="(item, i) in list" :ref="el => { divs[i] = el }"> {{ item }} </div> `,setup(){constlist=reactive([1,2,3])constdivs=ref([])// make sure to reset the refs before each updateonBeforeUpdate(()=>{divs.value=[]})onMounted(()=>{// the DOM element will be assigned to the ref after initial renderconsole.log(divs.value)// [<div/>]})return{
list,
divs
}}}createApp(App).mount('#app')</script></html>
Vue3.0 发 beta 版都有一段时间了,正式版也不远了,所以真的要学习一下 Vue3.0 的语法了。
GitHub 博客地址: https://github.com/biaochenxuying/blog
环境搭建
下载完成之后打开代码, 开启 sourceMap :
tsconfig.json 把 sourceMap 字段修改为 true:
"sourceMap": true
rollup.config.js 在 rollup.config.js 中,手动键入:
output.sourcemap = true
生成 vue 全局的文件:
yarn dev
在根目录创建一个 demo 目录用于存放示例代码,并在 demo 目录下创建 html 文件,引入构建后的 vue 文件
api 的使用都是很简单的,下文的内容,看例子代码就能懂了的,所以下面的例子不会做过多解释。
reactive
ref & isRef
Template Refs
使用
Composition API
时,反应性引用和模板引用的概念是统一的。为了获得对模板中元素或组件实例的引用,我们可以像往常一样声明
ref
并从setup()
返回。toRefs
将一个 reactive 代理对象打平,转换为 ref 代理对象,使得对象的属性可以直接在 template 上使用。
computed
watch & watchEffect
v-model
readonly
使用
readonly
函数,可以把 普通object 对象
、reactive 对象
、ref 对象
返回一个只读对象。返回的
readonly 对象
,一旦修改就会在console
有warning
警告。程序还是会照常运行,不会报错。
provide & inject
provide
和inject
启用类似于 2.xprovide / inject
选项的依赖项注入。两者都只能在
setup()
当前活动实例期间调用。inject
接受可选的默认值作为第二个参数。如果未提供默认值,并且在
Provide
上下文中找不到该属性,则inject
返回undefined
。Lifecycle Hooks
Vue2 与 Vue3 的生命周期勾子对比:
除了 2.x 生命周期等效项之外,
Composition API
还提供了以下调试挂钩:onRenderTracked
onRenderTriggered
这两个钩子都收到一个
DebuggerEvent
,类似于观察者的onTrack
和onTrigger
选项:例子:
最后
本文只列出了笔者觉得会用得非常多的 api,Vue3.0 里面还有不少新特性的,比如
customRef
、markRaw
,如果读者有兴趣可看 Vue Composition API 文档。Vue Composition API 文档: https://composition-api.vuejs.org/api.html#setup
vue-next 地址: https://github.com/vuejs/vue-next
参考文章:
支持一下下👇
The text was updated successfully, but these errors were encountered: