Vue.js前端框架教程4:Vue响应式变量和指令(Directives)

ops/2024/12/19 8:12:08/

文章目录

        • Vue 2.x 中的响应式变量
          • Vue 3.x 中的响应式变量
        • 指令(Directives)
          • v-model
          • v-on
          • @click
      • 其他常用指令

Vue 中,响应式变量是与 Vue 实例的数据绑定系统紧密相关的。它们允许你创建数据和 DOM 之间的双向绑定,这意味着当响应式变量的值发生变化时,视图会自动更新以反映这些变化。Vue 提供了几种创建响应式变量的方法,这些方法随着 Vue 版本的不同而有所变化。

Vue 2.x 中的响应式变量

Vue 2.x 中,响应式变量通常是通过 data 函数返回的对象中的属性来创建的。这些属性可以通过不同的指令(如 v-model)与模板中的 DOM 元素绑定。

// Vue 2.x
new Vue({el: '#app',data() {return {message: 'Hello Vue!'};}
});

在模板中:

<div>{{ message }}</div>
Vue 3.x 中的响应式变量

Vue 3 引入了 Composition API,提供了更多的响应式变量创建方式,包括 refreactive

  1. 使用 ref 创建响应式变量

ref 用于创建一个响应式的引用,它包装了一个值,使得这个值是响应式的。

// Vue 3
import { ref } from 'vue';const message = ref('Hello Vue 3!');

在模板中使用:

<template><div>{{ message }}</div>
</template>
  1. 使用 reactive 创建响应式对象

reactive 用于创建一个响应式的对象,对象的所有属性都是响应式的。

import { reactive } from 'vue';const state = reactive({message: 'Hello Vue 3!',count: 0
});

在模板中使用:

<template><div>{{ state.message }} - {{ state.count }}</div>
</template>
  1. 计算属性 computed

computed 用于创建一个基于响应式变量的计算值。

import { ref, computed } from 'vue';const count = ref(0);
const doubledCount = computed(() => count.value * 2);
  1. 侦听器 watchwatchEffect

watchwatchEffect 用于侦听响应式变量的变化,并在变化时执行某些操作。

import { ref, watch } from 'vue';const count = ref(0);watch(count, (newValue, oldValue) => {console.log(`count changed from ${oldValue} to ${newValue}`);
});

Vue 3 的响应式系统提供了更多的灵活性和功能,使得状态管理更加直观和强大。通过使用 refreactivecomputedwatch,你可以构建复杂的响应式逻辑,而 Vue 会自动处理 DOM 的更新,以确保视图与数据保持同步。

指令(Directives)

在 Vue.js 中,v-modelv-on@click 是指令(Directives),它们用于在模板中创建响应式数据绑定和事件处理。下面是这些指令的详细解释和用法:

v-model

v-model 是一个在表单控件元素上创建双向数据绑定的指令。它会自动根据控件类型选择合适的方法来更新元素的值。

<!-- 文本输入 -->
<input v-model="message" placeholder="编辑我"><!-- 多行文本输入 -->
<textarea v-model="message" placeholder="编辑我"></textarea><!-- 选择框 -->
<select v-model="selectedOption"><option disabled value="">请选择一个选项</option><option>选项 A</option><option>选项 B</option><option>选项 C</option>
</select>

Vue 3 中,v-model 可以用于自定义组件,并且可以指定特定的 propevent 来创建更细粒度的双向绑定。

v-on

v-on 是一个用于监听 DOM 事件的指令。它可以让你在元素上绑定一个事件监听器,当事件触发时,执行指定的 JavaScript 函数。

<!-- 点击按钮时调用 this.someMethod -->
<button v-on:click="someMethod">点击我</button><!-- 缩写 -->
<button @click="someMethod">点击我</button><!-- 内联处理器 -->
<button v-on:click="message = 'Hello Vue!'">点击我</button>

v-on 也可以用于监听组件事件,这在父子组件通信中非常有用。

@click

@clickv-on:click 的缩写形式,它用于监听点击事件。这是一个常用的事件,特别是在处理按钮点击时。

<!-- 点击按钮时调用 this.someMethod -->
<button @click="someMethod">点击我</button><!-- 内联处理器 -->
<button @click="message = 'Hello Vue!'">点击我</button>

其他常用指令

  • v-bind:用于动态地绑定一个或多个属性,或一个组件 prop 到表达式。

    <img v-bind:src="imageSrc">
    <!-- 缩写 -->
    <img :src="imageSrc">
    
  • v-for:用于基于源数据多次渲染元素或模板块。

    <ul><li v-for="item in items" :key="item.id">{{ item.text }}</li>
    </ul>
    
  • v-ifv-else-ifv-else:用于条件性地渲染一块内容。

    <p v-if="user.isLoggedIn">欢迎回来,{{ user.name }}!</p>
    <p v-else>请登录。</p>
    
  • v-show:用于根据表达式的真假值切换元素的显示。

    <p v-show="isVisible">现在你看到我了。</p>
    
  • v-cloak:与 CSS 结合使用,用于在 Vue 实例被创建之前保持元素的原始内容隐藏。

    <style>[v-cloak] {display: none;}
    </style>
    <div v-cloak>我将在 Vue 实例创建后显示。
    </div>
    

这些指令是 Vue.js 模板语法的核心部分,它们提供了一种声明式的方式来处理 DOM 更新和事件监听,使得开发更加高效和简洁。


http://www.ppmy.cn/ops/143132.html

相关文章

elementui进度条Progress组件

一、Progress组件 二、各部分代码 1.html代码 <div><div class"showprogress" v-for"item in regions" :key"item.name"><span>{{ item.name }}</span><el-progress :percentage"percentage(item.count, total…

软件工程复习重点(第一章 软件工程概述)

1.什么是软件&#xff1f;软件有什么特点&#xff1f; 软件分类&#xff1f; 计算机软件--计算机系统中的程序、数据及其文档的统称。 2.软件发展的3个阶段 &#xff08;1&#xff09;程序设计阶段&#xff1b;&#xff08;2&#xff09;程序系统阶段&#xff1b;&#xff08…

简单的go写的websocket协议 im 聊天 服务,流程简单清晰,采用golang编写,flutter im客户端。免费开源哈,随意用

mini-im 1、说明&#xff1a; 项目地址&#xff1a;https://github.com/haomiao33/minim 1.1、项目介绍&#xff1a; 简单的go写的im服务&#xff0c;流程简单清晰,大部分接口使用的是http&#xff0c;方便流程控制。login服务目前只是用来做服务端推送消息通知到客户端。本…

[C++]多态

1. 什么是多态性&#xff1f; 1.定义 多态性是指同一个函数或操作在不同对象上表现出不同的行为。 2.分类 C 中的多态性主要分为两种&#xff1a; 1.编译时多态性&#xff08;静态多态性&#xff09;&#xff1a; 编译时决定调用哪个函数。通过 函数重载 和 运算符重载 实…

Linux下常用的网络编程函数详解

在网络编程中&#xff0c;我们经常需要处理 IP 地址和端口号等数据&#xff0c;这些数据需要在主机字节序&#xff08;Host Byte Order&#xff09;与网络字节序&#xff08;Network Byte Order&#xff09;之间进行转换。 什么是字节序&#xff1f; 字节序指的是多字节数据在…

fabric.js

目录 一、在canvas上画简单的图形 二、在canvas上用路径(Path)画不规则图形 三、在canvas上插入图片并设置旋转属性(angle) 四、让元素动起来(animate) 五、图像过滤器(filters)让图片多姿多彩 六、颜色模式(Color)和相互转换(toRgb、toHex) 七、对图形的渐变填充(Gradi…

常用的es操作

前言 我们前面写过ES基础操作和ES高级查询 写的都很细&#xff0c;但是很多时候我们仅仅是忘记具体的某个语法&#xff0c;去那两篇博客查找就很麻烦了&#xff0c;这篇博客就把常用的ES操作进行总结。 常用操作 建索引&#xff08;建表&#xff0c;不过并没有指定字段名和类…

【Qt】信号、槽

目录 一、信号和槽的基本概念 二、connect函数&#xff1a;关联信号和槽 例子&#xff1a; 三、自定义信号和槽 1.自定义槽函数 2.自定义信号函数 例子&#xff1a; 四、带参的信号和槽 例子&#xff1a; 五、Q_OBJECT宏 六、断开信号和槽的连接 例子&#xff1a; …