警告信息:
浏览器控制台警告:Write operation failed: computed value is readonly
使用环境:
Vue 3.2.41
Chrome x64 v103.0.5060.66
报错情景:
利用Vue的响应式修改某个值时出现该警告。
<template>
{{ msg }}
<br><button@click="add">+</button></template>
<scriptsetuplang="ts">import{ computed, ref}from'vue'const x =ref('-')// 计算属性constmsg:any =computed(()=>{return x.value +'-'})// 修改 计算属性的值 的方法constadd=()=>{
msg.value = msg.value +'???'}</script>
报错原因:
修改的值是计算属性,而计算属性是只读的。所以无法修改。
解决方法:
为计算属性配置修改方法,如下:
<scriptsetuplang="ts">import{ computed, ref}from'vue'const msg =ref('-')// 计算属性constcomputedMsg: any =computed({get(){// 这里返回的值是获取计算属性的值return msg.value +'-'},set(newValue){// 参数newValue是被修改后的值// 这里是修改的具体逻辑/*
注意这里不要使用下面的方法修改计算属性的值来达到修改目的
而应该直接修改源响应数据xxx的值
*/
msg.value = newValue
// computedMsg.value = newValue}})// 修改 计算属性的值 的方法constadd=()=>{
computedMsg.value = computedMsg.value +'???'}</script>
参考:
计算属性 | Vue.js
版权归原作者 PKQ1023 所有, 如有侵权,请联系我们删除。