vue.js - 为什么在使用 NumericTextField 时会出现“避免直接更改道具”?
问题描述
我在 VueJS 中创建了一个简单的视图组件,但遇到了一个非常常见的错误:
void 直接改变一个 prop,因为只要父组件重新渲染,该值就会被覆盖。相反,使用基于道具值的数据或计算属性。道具被变异:“价值”
这是我的代码:
<template>
<numeric-text-field class="mx-auto" label="Head Mass" units="kg" v-model="turbine.head_mass" />
</template>
<script>
import NumericTextField from '@/components/common/NumericTextField'
export default {
name: 'Turbines',
components: {
NumericTextField
},
data () {
return {
turbine: {}
}
}
}
</script>
<style scoped>
</style>
奇怪的是,我收到修改“值”的错误,但我的代码中没有值。我认为这是由数字文本字段创建的间接层引起的。当我仅使用普通输入文本时,我的代码中不存在此问题。这里发生了什么?除了 v-model 之外,我应该以另一种特殊方式将模型连接到我的数字文本字段吗?
解决方案
事实证明,在原始发布时我不知道这是在 NumericTextField 中发布的。我认为这是一个标准的 Vueify 组件,但被同事添加了。正如原始帖子的评论所指出的那样,它没有正确处理双向输入。
诀窍是从 @input 中的 NumericTextField 组件添加 this.$emit('input', value) ,就像 Ohgodwhy 建议的那样。
推荐阅读
- vb.net - 寻找一种从字符串数组填充列表视图的方法
- python - 为什么列表没有附加而是被覆盖?
- r - 将时间戳/区域转换为 R 日期时间
- go - 将内部 go struct 数组转换为 protobuf 生成的指针数组
- rubygems - msfconsole 弹出错误:Bundler 加载失败,无法加载此类文件 -- bundler/setup
- apache-kafka - 有没有办法在 Apache Kafka 2.0 中确定消息的优先级?
- uml - 证明给定 UML 图没有实例
- r - 根据另一个数据框给出的匹配值从大列表中提取数据框
- c# - NavigationView 中的 UWP 多个 MenuItem 视图
- php - 如何使用将csv文件转换为多维数组的递归函数