vue3 ref的用法及click事件的说明

1、ref可以定义一个简单的属性,也可以是一个复杂的列表、数组等等。

2、为什么要使用 ref?简单的let个变量不行吗?const个变量不行吗?

      其实这个跟vue的响应式的系统有关,官方的说明如下:

3、为 ref() 标注类型

一般我们直接赋string的时候,会自动推导出是string,但是我们在开发的过程中会经常遇到,可能要赋个日期型的,比如 dayjs,然后我们传到服务器的时候,是一个string类型,这样我们就要指导类型,让系统知道我们的编写是正确的。

4、深层响应性

5、@click

绑定到一个方法/函数。 这个 @click 语法是 v-on:click 的简写。也就是可以直接@click="func名",也可以v-on:click="func名"。

6、简单的官方事例:

https://cn.vuejs.org/examples/#handling-input

<!--
这个示例展示了如何通过 v-on 指令处理用户输入。
-->

<script setup>
import { ref } from 'vue'

const message = ref('Hello World!')

function reverseMessage() {
  // 通过其 .value 属性
  // 访问/修改一个 ref 的值。
  message.value = message.value.split('').reverse().join('')
}

function notify() {
  alert('navigation was prevented.')
}
</script>

<template>
  <!--
    注意我们不需要在模板中写 .value,
    因为在模板中 ref 会自动“解包”。
  -->
  <h1>{{ message }}</h1>

  <!--
    绑定到一个方法/函数。
    这个 @click 语法是 v-on:click 的简写。
  -->
  <button @click="reverseMessage">Reverse Message</button>

  <!-- 也可以写成一个内联表达式语句 -->
  <button @click="message += '!'">Append "!"</button>

  <!--
    Vue 也为一些像 e.preventDefault() 和 e.stopPropagation()
    这样的常见任务提供了修饰符。
  -->
  <a href="https://vuejs.org" @click.prevent="notify">
    A link with e.preventDefault()
  </a>
</template>

<style>
button, a {
  display: block;
  margin-bottom: 1em;
}
</style>

7、运行结果:

8、总结

ref可以定义类型,也可以不指定通过类型推导出来,ref是响应式的,也就是说你修改了,会自动去更新UI,而普通的变量不会,ref在template中引用的时候,不需要.vaue,会自动解包。

在script中引用的时候,一定要加上.value或者unref(变量),否则是要报错的。

Vue3中,ref是一个函数,用于创建一个响应式的引用。它接受一个初始值作为参数,并返回一个可通过.value访问和修改值的对象。 例如,我们可以使用ref创建一个名为a的引用,并将其初始化为0: const a = ref(0); 我们可以通过访问a.value来获取或修改a的值: console.log(a.value); // 输出0 a.value = 1; console.log(a.value); // 输出1 除了基本类型外,我们还可以为ref的值指定更复杂的类型。可以使用Ref类型来明确指定ref内的值的类型。 例如,我们可以创建一个引用,其值可以是字符串或数字: import type { Ref } from 'vue'; const year: Ref<string | number> = ref('2020'); year.value = 2020; // 成功! 在模板中使用ref时,需要注意自动"解包"只适用于ref作为模板渲染上下文的顶层属性的情况。如果ref是嵌套在对象中的属性,则需要手动解包。 例如,在模板中使用obj.count时,需要通过obj.count.value来访问ref的值: <script setup> import { ref } from 'vue'; const obj = { count: ref(1) } </script> <template> <div>{{ obj.count.value }}</div> </template> 这样,我们就可以正确地使用Vue3中的ref了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue3超详细的ref()用法,看这一篇就够了](https://blog.csdn.net/EchoLiner/article/details/130445600)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值