我们可以使用 methods
属性给 Vue 定义方法,methods
的基本语法:
const App = {
methods:{
// 在此时定义方法,方法之间使用逗号分隔
//方法名:function(){}
}
}
const app = Vue.createApp(App);
app.mount("#app");
演示
例如在 methods
中定义一个名为 show
的方法:
methods:{
show: function(){
console.log("显示内容")
}
}
在方法中访问属性
在 methods
方法中访问 data
的数据,可以直接通过 this.属性名
的形式来访问。
例如我们在 show
方法中,访问 number
属性,可以直接通过 this.number
形式访问,其中 this
表示的就是Vue 实例对象:
<script>
const App = {
data() {
return {
number: 100
}
},
methods: {
show: function () {
console.log(this.number);
}
}
}
const app = Vue.createApp(App);
app.mount("#app");
</script>
如果是在 Vue 构造函数外部,可以使用 …… 来访问 data
中的数据。
实战
目标:点击按钮修改用户名
<script src="https://unpkg.com/vue@next"></script>
<div id="app">
<p>{{message}}</p>
<button @click="change">点我改名</button>
</div>
<script>
const App = {
data() {
return {
message: "小飞侠"
}
},
methods: {
change() {
this.message = "水星仔" // 改变data中属性的值
}
}
}
const app = Vue.createApp(App);
app.mount("#app");
</script>
浏览器渲染
{{message}}
按钮只在第一次点击有效。
computed(计算属性)PK methods(方法)
- 计算属性值会基于其响应式依赖被缓存。一个计算属性仅会在其响应式依赖更新时才重新计算
- 方法调用总是会在重渲染发生时再次执行函数
- 怎么选?如果你确定不需要缓存,那么也可以使用方法调用。