网站空间过期宣传推广网络推广
vue 使用this.$set设置对象属性值时,不更新试图。
后来发现是因为若对象中存在该属性时,只更新值,不添加响应监测。
//vue/src/core/observer/index.js 源码片段/*** Set a property on an object. Adds the new property and* triggers change notification if the property doesn't* already exist.*/
export function set (target: Array<any> | Object, key: any, val: any): any {if (process.env.NODE_ENV !== 'production' &&(isUndef(target) || isPrimitive(target))) {warn(`Cannot set reactive property on undefined, null, or primitive value: ${(target: any)}`)}if (Array.isArray(target) && isValidArrayIndex(key)) {target.length = Math.max(target.length, key)target.splice(key, 1, val)return val}if (key in target && !(key in Object.prototype)) {target[key] = valreturn val}const ob = (target: any).__ob__if (target._isVue || (ob && ob.vmCount)) {process.env.NODE_ENV !== 'production' && warn('Avoid adding reactive properties to a Vue instance or its root $data ' +'at runtime - declare it upfront in the data option.')return val}if (!ob) {target[key] = valreturn val}defineReactive(ob.value, key, val)ob.dep.notify()return val
}
解决办法:使用this.$delete先删除已经存在的属性值
if(request_name in this.request_error)this.$delete(this.request_error,request_name)