Vue3学习(第二天)

  • 一、vscode创建vue3模板
  • 1.打开vscode点击左下角设置按钮,点击配置用户代码片段
  • 2.点击vue.json,把模板输入。
  • 二、响应式基础(ref()和reactive())
  • 1.ref()函数
  • 2.reactive()
  • 三、computed计算属性
  • 四、watch侦听器
  • 1.侦听一个ref():
  • 2.侦听多个时使用数组:
  • 3.深层侦听
  • 五、watchEffect高级侦听器
  • 停止侦听器


一、vscode创建vue3模板

1.打开vscode点击左下角设置按钮,点击配置用户代码片段

vue3 fabric 怎么使用_vscode

2.点击vue.json,把模板输入。

vue3 fabric 怎么使用_vscode_02

vue3 fabric 怎么使用_vscode_03

"Create Vue3 template":{
      "prefix": "vue3",
      "body": [
        "<template>",
        "",
        "<div></div>",
        "",
        "</template>",
        "",
        "<script setup lang='ts'>",
        "import { ref , reactive } from 'vue'",
        "",
        "</script>",

        "<style scoped>",
        "",
        "</style>",
      ],
      "description": "Create VUE3 template"
    }

完成后在新建vue页面中输入vue3回车即可自动生成vue3模板。

二、响应式基础(ref()和reactive())

在vue3中,所有被ref()或者reactive()包裹的东西才是响应式的。

1.ref()函数

ref() 方法允许我们创建可以使用任何值类型的响应式 ref:

vue3 fabric 怎么使用_vue.js_04


在没有引用ref()时,点击按钮想要修改count值会发现页面内容没有变化。

在引用ref()时

vue3 fabric 怎么使用_响应式_05


可以看到成功修改,而且count的值是一个ref对象,需要使用count.value才会选到值。

ref()还可以获取dom元素:

vue3 fabric 怎么使用_vue.js_06

2.reactive()

仅对对象类型有效(对象、数组和 Map、Set 这样的集合类型),而对 string、number 和 boolean 这样的 原始类型 无效。

vue3 fabric 怎么使用_vue3 fabric 怎么使用_07


reactive取值赋值不需要.value,可以直接取值赋值。

值得注意的是,reactive()是一个Proxy对象,不能直接赋值,否则会破坏响应对象,可以使用push。

vue3 fabric 怎么使用_vue3 fabric 怎么使用_08


vue3 fabric 怎么使用_学习_09

三、computed计算属性

vue3中的computed属性需要import才可以使用,写法与vue2类似:

vue3 fabric 怎么使用_vscode_10

四、watch侦听器

在组合式 API 中,我们可以使用 watch 函数在每次响应式状态发生变化时触发回调函数。
watch()函数可以直接侦听ref、reactive、或多个数据源等。

1.侦听一个ref():

vue3 fabric 怎么使用_vue.js_11

2.侦听多个时使用数组:

vue3 fabric 怎么使用_响应式_12

3.深层侦听

当出现这种好几层的对象时ref()会出现无法侦听但是reactive会正常侦听:

vue3 fabric 怎么使用_vue.js_13


vue3 fabric 怎么使用_vue3 fabric 怎么使用_14


此时ref()侦听后加入deep选项即可:

vue3 fabric 怎么使用_vscode_15

如果要监听单一值时需要注意把值变成一个函数:

vue3 fabric 怎么使用_vscode_16


watch 默认是懒执行的:仅当数据源变化时,才会执行回调。但在某些场景中,我们希望在创建侦听器时,立即执行一遍回调。举例来说,我们想请求一些初始数据,然后在相关状态更改时重新请求数据。

我们可以通过传入 immediate: true 选项来强制侦听器的回调立即执行:

watch(source, (newValue, oldValue) => {
  // 立即执行,且当 `source` 改变时再次执行
}, { immediate: true })

五、watchEffect高级侦听器

watchEffect()函数在进入页面时回调会立即执行一次,不需要指定 immediate: true。在执行期间,它会自动追踪 .value 作为依赖(和计算属性类似)。每当 .value 变化时,回调会再次执行。

vue3 fabric 怎么使用_vscode_17

停止侦听器

要手动停止一个侦听器,请调用 watch 或 watchEffect 返回的函数:

const unwatch = watchEffect(() => {})

// ...当该侦听器不再需要时
unwatch()