錯誤描述
最近在封裝Vue模塊時,借助Vue的Computed屬性監(jiān)聽傳遞的數(shù)據(jù),但是開發(fā)調(diào)試過程中控制臺取提示Computed property was assigned to but it has no setter
?錯誤??刂婆_報錯如下:
?錯誤分析
根據(jù)控制臺錯誤提示,組件中定義的computed
屬性缺少setter
,使用過computed
?都應(yīng)該知道,該錯誤提示通常發(fā)生在組件內(nèi)為computed
屬性賦值的時候,如果沒有顯示的聲明setter
,控制臺則會打印如上錯誤。那么順著這個方向,繼續(xù)排查錯誤
以下是我的代碼user.js
export default {
// 開啟命名空間
namespaced: true,
// state保存的數(shù)據(jù)
state: () => ({
// 存儲的地址
address: JSON.parse(uni.getStorageSync('address') || '{}')
}),
mutations: {
//更新收貨地址
updateAddress(state, address) {
state.address = address
// 通過 this.commit() 方法,調(diào)用 m_user 模塊下的 saveAddressToStorage 方法將 address 對象持久化存儲到本地
this.commit('m_user/saveAddressToStorage')
},
// 定義將 address 持久化存儲到本地 mutations 方法
saveAddressToStorage(state) {
uni.setStorageSync('address', JSON.stringify(state.address))
}
},
// 數(shù)據(jù)包裝器
getters: {
// 拼接地址
addstr(state) {
if (!state.address.provinceName) {
return ''
} else {
return state.address.provinceName + state.address.cityName + state.address.countyName + state.detailInfo
}
},
},
}
發(fā)先我在user.js中對address進(jìn)行了重新賦值
解決辦法一
在要使用該模塊數(shù)據(jù)的組件computed里添加此代碼
address: {
get() {
return this.address;
},
set() {}
}
這種方法雖然解決了目前的問題,但是會出現(xiàn)一個新問題,如下
?目前不知道解決辦法,有知道的小伙伴可以給我留言
解決辦法二文章來源:http://www.zghlxwxcb.cn/news/detail-413000.html
將組件計算屬性里的代碼注釋掉(下下策)文章來源地址http://www.zghlxwxcb.cn/news/detail-413000.html
computed: {
// ...mapState('m_user', ['address']),
...mapGetters('m_user', ['addstr']),
}
到了這里,關(guān)于Vue computed 報錯:Computed property ‘ ‘ was assigned to but it has no setter 錯誤原因分析與解決辦法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!