【发布时间】:2018-02-20 04:58:35
【问题描述】:
我正在尝试使用来自带有 v-model 的道具的数据,以下代码有效,但出现警告。
<template>
<div>
<b-form-input v-model="value" @change="postPost()"></b-form-input>
</div>
</template>
<script>
import axios from 'axios';
export default {
props: {
value: String
},
methods: {
postPost() {
axios.put('/trajectory/inclination', {
body: this.value
})
.then(response => {
})
.catch(e => {
this.errors.push(e)
})
}
}
}
</script>
警告说:
"避免直接修改 prop,因为每当父组件重新渲染时,该值将被覆盖。相反,使用基于 prop 值的数据或计算属性。正在修改的 Prop:“value”
所以我改变了,现在我正在使用警告所说的数据。
<template>
<div>
<b-form-input v-model="_value" @change="postPost()"></b-form-input>
</div>
</template>
<script>
import axios from 'axios';
export default {
props: {
value: String
},
data() {
return {
_value: this.value
}
},
methods: {
postPost() {
axios.put('/trajectory/inclination', {
body: this._value
})
.then(response => {
})
.catch(e => {
this.errors.push(e)
})
}
}
}
所以现在代码不起作用并且警告说:
“属性或方法“_value”未在实例上定义,但在渲染期间被引用。确保在数据选项中声明反应数据属性”
知道如何修复第一个代码以抑制警告吗? (或者关于如何修复第二个代码的一些想法?)
Obs.: b-form-input 这不是我的组件,这是来自 Boostrap-Vue (Doc for b-form-input) 的文本输入
【问题讨论】:
标签: vue.js vuejs2 vue-component