Vue的computed与methods的区别

computed 计算属性与methods方法两种方式得到的结果确实是相同的,但不同的是,计算属性是基于它们的响应式依赖进行缓存的,即只有在相关相应依赖发生改变时才进行修改,不发生改变时,页面访问多少次都不会发生改变;看下面例子很容易得出。(例:将输入框的值反转输出)

		<input type="text" v-model="message"/>
		<p>反转的输入值:{{reversedMessage}}</p>
		<p>反转的输入值:{{reversedMessage}}</p>
		<p>{{reversedMessage1()}}</p>
		<p>{{reversedMessage1()}}</p>
	<script>
	export default {
		name: 'login',
		data() {
			return {
				message: ''
			}
		},
		computed: {
			reversedMessage: function(){
				console.log("computed");
				return this.message.split('').reverse().join('');
			}
		},
		methods: {
			reversedMessage1(){
				console.log("methods");
				return this.message.split('').reverse().join('');
			}
		}
	}
</script>

每次输入结果更改时,控制台输出结果: computed/methods/methods

为什么需要缓存?假设我们有一个性能开销比较大的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter

发布了5 篇原创文章 · 获赞 0 · 访问量 452

猜你喜欢

转载自blog.csdn.net/weixin_43743804/article/details/102951621