初始前端1

简介: 本文介绍了 Vue 组合式开发中使用 `ref` 实现响应式数据的方法,强调不依赖 `this`。内容包括创建 `.vue` 文件的模板结构、使用 `ref` 定义响应式变量(如 `count2.value`)与非响应式变量(如 `count3`)的区别,以及如何在模板中绑定数据。同时通过表格对比了 `ref` 在 JavaScript 和模板中的使用方式,指出在 JS 中需用 `.value` 操作数据,而在模板中可直接访问。最后以生活化的类比解释 `ref` 的作用,帮助开发者更好地理解响应式原理。

vue组合式开发(不使用this)

模板式写法:

vscod(调出控制终端快捷键ctrl+shift+~)

1.在文件夹中创建xx.vue文件,文件包括三部分

<script setup></script>  对应js
<template></template> 只能有一份 ,另外两个任意  对应html
<style scoped></style>  对应 css

2.填充内容

<script setup>
import { onMounted, ref } from "vue";  //引用vue的函数
/* 组合式开发 */
  //代表count2初始值为0
const count2 = ref(0); //ref响应式赋值,模型改变视图会立即渲染,修改多次渲染多次,通俗就是,点击数字会变化
const demo2 = () => {
  count2.value++;    响应式 要用.value进行操作
};
  let count3 = 0; //不是响应是赋值,第一次会渲染视图,但是后面对数据的修改视图不会渲染 ,点击数字无变化
const demo3 = () => {
  count3++;
};
onMounted(() => {
  console.log("页面挂在完成。。。");
});
</script>
<template>
  <h1>组合式开发</h1>
  <button @click="demo2">click:{{ count2 }}</button>  {{ count2 }} vue中的插值表达式
  <button @click="demo3">click:{{ count3 }}</button>
</template>
<style scoped></style>

3.挂载在APP.vue中

<script setup>
import Dev1XXS(文件名) from "./Pages/Dev1XXS.vue(路径)";  导入导入其他组件,当前组件能够使用Dev1XXS组件的功能和 UI
</script>
// 模板只能有一份
<template>
  <Dev1XXS></Dev1XXS>    //写模板  定义组件的 UI 结构 将Dev1XXS组件渲染到当前组件的位置;标签中间能否插入内容要根据属性决定
</template>
<style scoped></style>


ref使用value的时机

变量

数据类型

存储内容

典型应用场景

访问方式(JS / 模板)

queryForm

对象

表单字段

表单数据绑定、筛选条件

queryForm.value.name

/queryForm.name

empId

数值

单个 ID 值

记录行 ID、当前选中项

empId.value

/empId

employeeList

数组

列表数据

列表渲染、数据展示

employeeList.value

/employeeList

场景

JavaScript 代码(需用.value

模板代码(无需.value

访问对象属性

queryForm.value.name

queryForm.name

访问基本类型

empId.value

empId

访问数组

employeeList.value[0].name

employeeList[0].name

修改对象属性

queryForm.value.name = "张三"

<input v-model="queryForm.name">

修改基本类型

empId.value = 1001

<div>{{ empId }}</div>

  1. ref的作用:将数据包装成响应式对象,通过.value存储实际值
  2. JS 中必须用.value:因为需要显式操作被包装的数据,让 Vue 追踪变化。
  3. 模板中无需.value:框架自动解包.value,简化语法。

举个生活类比:
ref就像一个装着糖果(数据)的盒子(.value)。

  • 在 JS 中,你需要打开盒子(.value)才能拿到糖果;
  • 在模板中,盒子是透明的,你可以直接看到并拿到糖果(无需.value)。
相关文章
|
3月前
|
Java
初识线程
在 Java 多线程编程中,线程对象名与线程名称是两个不同概念。对象名是代码中引用线程对象的变量名,如 `t1`,而线程名称是线程实例在 JVM 中的标识,可通过 `setName()` 或构造函数设置。若不显式设置,Java 会分配默认名称如 `Thread-0`。通过 `Thread.currentThread().getName()` 可获取当前执行线程的名称。
|
3月前
|
存储 JSON 前端开发
初始前端2
本文介绍了前端开发中的几个关键技术点,包括使用`layout-&gt;router-&gt;view`结构实现页面渲染、利用`ref`定义动态响应模型、通过`axios`及`el-upload`实现文件上传、以及使用`localStorage`进行数据持久化存储等内容。重点解析了各组件间的数据传递、异步请求处理、前后端数据格式适配及数据序列化/反序列化操作,帮助开发者更好地理解前后端交互及组件协作机制。
|
3月前
|
存储 前端开发 JavaScript
初始前端3
本文介绍了前端开发中的表单交互设计与数据绑定技巧,包括按钮点击事件处理、表单模型与实例的创建及使用、单向与双向数据绑定的区别与应用,以及表格数据展示等内容,适用于 Vue 框架下的 Element UI 组件实践。
|
3月前
|
NoSQL Java 数据库
杂项8
缓存三剑客(穿透、击穿、雪崩)解析及解决方案:穿透指请求数据在Redis和数据库均不存在,可通过校验、空值缓存、布隆过滤器应对;击穿针对热点数据失效,可用互斥锁或永不过期策略;雪崩因大量缓存同时失效,可采用随机过期、集群部署、降级机制缓解。
|
3月前
|
存储 安全 Java
java常识2
本内容介绍了并发编程中的核心概念与实现机制,包括悲观锁与乐观锁的原理及应用、Java中的synchronized与ReentrantLock的区别、线程池的参数配置、线程创建方式、Lambda表达式的特性、反射机制及其应用场景。内容涵盖了数据库锁、第三方中间件锁、JUC并发包中的常用工具类,以及BIO、NIO、AIO的基本原理和使用场景,适合对Java并发编程有深入学习需求的开发者参考。
|
3月前
|
消息中间件 存储 安全
初始kafka
Kafka因高吞吐量被广泛使用,适合处理大量用户行为数据,支持实时推荐和数据展示。其优势包括提升响应速度、故障隔离、低耦合、流量削峰等。但也有架构复杂、依赖Broker等缺点。为避免消息丢失,可通过同步/异步发送、重试机制、设置ACK确认级别、副本机制及手动提交offset等方式保障消息可靠性。
|
3月前
|
Java Nacos Sentinel
了解微服务
本文对比了微服务与单体架构的优缺点,指出单体架构适合小规模系统,开发部署简单,而微服务适合复杂系统,具备良好的扩展性和灵活性。同时介绍了Spring Cloud相关组件如Nacos、OpenFeign、Sentinel的原理与应用,以及微服务中的熔断、降级、限流机制和AT模式的工作原理。
|
3月前
|
数据采集 存储 XML
Python爬虫XPath实战:电商商品ID的精准抓取策略
Python爬虫XPath实战:电商商品ID的精准抓取策略
|
小程序 开发者
微信小程序报错[ app.json 文件内容错误] app.json: app.json 未找到,一招解决
微信小程序报错[ app.json 文件内容错误] app.json: app.json 未找到,一招解决
4837 0
微信小程序报错[ app.json 文件内容错误] app.json: app.json 未找到,一招解决
|
8月前
|
存储 人工智能 搜索推荐
Shandu:开源AI研究黑科技!自动挖掘多层级信息,智能生成结构化报告
Shandu 是一款开源的 AI 研究自动化工具,结合 LangChain 和 LangGraph 技术,能够自动化地进行多层次信息挖掘和分析,生成结构化的研究报告,适用于学术研究、市场分析和技术探索等多种场景。
633 8
Shandu:开源AI研究黑科技!自动挖掘多层级信息,智能生成结构化报告