vue 显示[hmr] waiting for update signal_Vue初体验之指令

指令

文档关于指令的解释:

指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式 (v-for 是例外情况)。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。
  • v-text:相当于{{ 数据 }}
  • v-html:可用于数据内容含有HTML不希望被作为Vue模版进行编译时。
  • v-show:根据表达式的值切换元素的显示和隐藏。
  • v-if:根据表达式的真值条件渲染元素。
  • v-else:前一兄弟元素必须有v-ifv-else-if
  • v-else-if:前一兄弟元素必须有v-ifv-else-if
  • v-for:基于源数据多次渲染元素或模板块。此
  • v-on:可缩写成@,用于绑定事件监听器。
  • v-bind:可缩写成:,用于绑定vue属性。
  • v-model:在表单控件或者组件上创建双向绑定。
  • v-slot
  • v-pre:不编译内容。
  • v-cloak
  • v-once

指令参数

一些指令能够接收一个“参数”,在指令名称之后以冒号表示。如

v-bind:class="className"
v-on:click="doSomething"
v-on:[eventName]="doSomething"

这里的classclick[eventName]就是参数,[eventName]可以动态监听事件类型,比如当 eventName 的值为 "click" 时,v-on:[eventName] 将等价于 v-on:click。

修饰符

修饰符 (modifier) 是以半角句号.指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。

常见的修饰符 .stop:阻止事件冒泡 .prevent:取消事件默认行为 * .sync:用于对prop的双向绑定

fervent-sun-j7o3o - CodeSandbox​codesandbox.io
4de2c35b7bac0bec972369505504cd0d.png

父组件代码

<template>
  <div id="app">
    {{total}}<br/>
    使用@update:total
    <Child :total="total" @update:total="total = $event"></Child>
    使用.sync
    <Child :total.sync="total"></Child>
  </div>
</template>

<script>
import Child from "./Child.vue"

export default {
  name: "App",
  data: () => {
    return {
      total: 100
    }
  },
  components: {
    Child: Child
  }
};
</script>

子组件代码

<template>
<div>
  <button @click="$emit('update:total', total+10)">+10</button>
  <button @click="$emit('update:total', total-10)">-10</button>
  </div>
</template>

<script>
export default {
  props: ['total']
}
</script>

以上代码实现通过点击子组件按钮修改父组件数据。通过例子可以看到.sync能够实现和@update:total="total = $event"一样的效果。

c47d9d13f0650ceb4ff12d8f2c7e467e.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值