vue3.0新特性初体验(一)上

简介: vue3.0新特性初体验(一)上

自从尤大的3.0横空出世以来,备受关注。感觉写法越来越像React,不过尤大也说了,其中一部分是受到了React hooks的思想影响。本系列文章将先带大家了解vue3.0, 会用vue3.0,以及最后了解vue3.0源码。

先带大家了解下vue3.0的新特性玩法:(至于怎样创建vue3.0项目这里不再做更多的阐述,想了解的可以一移步官网。):

setup

setup是新的组件选项。它充当在组件内部使用入口点。

  • 调用时间

setup创建组件实例时,在初始组件解析后立即调用。在生命周期方面,它在beforeCreate之后, created之前被调用(2.x)。

  • 模板使用

如果setup返回一个对象,则该对象的属式将合并到组件模板的渲染上下文中:

<template>
  <div>{{ count }} {{ object.foo }}</div>
</template>
<script>
import { ref, reactive } from 'vue'
export default {
  setup() {
    const count = ref(0)
    const object = reactive({ foo: 'bar' })
    // expose to template
    return {
      count,
      object
    }
  }
}
</script>

请注意,setup 在模板中访问时,从ref返回的引用将自动解包,因此模板中使用不需要.value。在setup中访问必须需要.value

  • Render/ JSX用法

setup 还可以返回一个render函数:

import { h, ref, reactive } from 'vue'
export default {
  setup() {
    const count = ref(0)
    const object = reactive({ foo: 'bar' })
    return () => h('div', [
      count.value,
      object.foo
    ])
  }
}

接收 props  数据

  • 第一个接收的是props数据:
export default {
  props: {
    name: String
  },
  setup(props) {
    console.log(props.name)
  }
}

props数据可以用 watch 方法来监听:

export default {
  props: {
    name: String
  },
  setup(props) {
    watch(() => {
      console.log(`name is: ` + props.name)
    })
  }
}

在开发过程中,props对象不可更改(如果用户代码尝试对其进行更改,则会发出警告).

  • 第二个参数提供了一个上下文对象,该对象公开了先前在2.x API中使用this公开的属式:
// 2.0 中 this.$emit()
const MyComponent = {
  setup(props, context) {
    console.log(context)
    context.attrs
    context.slots
    context.emit
    context.ref
  }
}

context中的对象使用方式和2.0中的保持一致:

attrs并且slots是内部组件实例上对应值的代理。这样可以确保即使在更新后它们也始终显示最新值,以便我们可以对它们进行结构解析而不必担心访问陈旧的引用:

const MyComponent = {
  setup(props, { attrs }) {
    // a function that may get called at a later stage
    function onClick() {
      console.log(attrs.foo) // guaranteed to be the latest reference
    }
  }
}
  • this用法

this里面没有setup()。由于setup()是在解析2.x选项之前调用的,因此this内部setup()(如果可用)的行为将与this其他2.x选项完全不同。避免this进入的另一个原因setup()是对于初学者来说非常常见的陷阱:

setup() {
  function onClick() {
    this // not the `this` you'd expect!
  }
}


reactive

取得一个对象并返回原始对象的响应式代理。这等效于2.x的Vue.observable()

const obj = reactive({ count: 0 })

响应式转换是“深度”的:它影响所有嵌套的属式。在基于ES2015代理的实现中,返回的代理不等于原始对象。建议仅与响应式代理一起使用,并避免依赖原始对象。


相关文章
|
3月前
|
JavaScript 前端开发 开发者
Vue第1天:特性概览
Vue第1天:特性概览
|
3月前
|
缓存 JavaScript
Vue3 的模板语法:指令、插值语法和其他相关特性
Vue3 的模板语法:指令、插值语法和其他相关特性
156 4
Vue3 的模板语法:指令、插值语法和其他相关特性
|
3月前
|
JavaScript 算法 编译器
Vue3的新特性
Vue3的新特性
138 0
|
3天前
|
JavaScript 算法 API
Vue 3有哪些新特性
【8月更文挑战第16天】Vue 3有哪些新特性
15 1
|
10天前
|
JavaScript 前端开发 搜索推荐
揭秘 Vue 3 的 Teleport 特性,让你实现跨组件传输内容,使得开发变得更加得心应手!!
揭秘 Vue 3 的 Teleport 特性,让你实现跨组件传输内容,使得开发变得更加得心应手!!
|
2月前
|
缓存 JavaScript 前端开发
vue的一些特性
vue的一些特性
20 0
|
3月前
|
开发框架 JavaScript 算法
了解vue3的基本特性和底层原理
Vue3的底层原理涵盖了响应式系统的Proxy-based实现、组件的模板编译与渲染更新机制、组合式API带来的逻辑组织变革,以及其他关键特性的具体实现。这些原理共同构成了Vue3强大、高效、灵活的现代前端开发框架基础。
237 2
|
3月前
|
JavaScript 前端开发 编译器
Vue 3:新特性与改进技术详解
【4月更文挑战第25天】Vue 3 提升了编译和运行时性能,引入了Composition API实现灵活代码复用,新增Teleport用于任意位置渲染,支持Fragment多根节点及Suspense处理异步组件。同时,TypeScript支持增强,自定义指令和全局API也得到优化。Vue 3的新特性旨在提供更高效、灵活的开发体验,持续引领前端技术发展。
|
3月前
|
JavaScript 前端开发 API
Vue3有哪些新特性
【4月更文挑战第15天】 Vue3带来了显著性能提升和开发体验优化:更快的渲染速度、更小的捆绑体积、改进的内存管理、增强的TypeScript支持、引入Composition API提升代码复用性,以及使用Proxy改进响应式数据处理。这些特性使Vue3成为更高效、灵活和可靠的框架,为开发者创造高性能应用提供了强大工具。
28 0
|
9月前
|
JavaScript 前端开发 编译器
你知道Vue 3.0中Treeshaking特性吗?
你知道Vue 3.0中Treeshaking特性吗?
166 0