Vue.js 有什么东西会触发控制台中的警告?为什么不推荐它?您将如何修复它?
这是关于Javascript和VueJs的良好实践和知识 我已经对类型Api进行了注释,以查看是否存在其他警告Vue.js 有什么东西会触发控制台中的警告?为什么不推荐它?您将如何修复它?,vue.js,vuejs2,Vue.js,Vuejs2,这是关于Javascript和VueJs的良好实践和知识 我已经对类型Api进行了注释,以查看是否存在其他警告 <script> export default { name: "printer", props: { model: { type: String, required: true }, ip: {
<script>
export default {
name: "printer",
props: {
model: {
type: String,
required: true
},
ip: {
type: String,
required: true
},
jobs: {
type: Object,
validator: (value) => ["inProgress", "done", "error"].every((status) => typeof value[status] === "number")
},
progress: {
type: Number,
required: true
},
api: {
type: Api,
required: true
}
},
data: () => ({
timer: null
}),
methods: {
async refreshProgress() {
this.jobs = await this.api.getJobsNumbers({ model: this.model });
}
},
created() {
this.timer = setInterval(() => this.refreshProgress(), 30000);
},
destroyed() {
clearInterval(this.timer);
}
};
</script>
导出默认值{
名称:“打印机”,
道具:{
型号:{
类型:字符串,
必填项:true
},
知识产权:{
类型:字符串,
必填项:true
},
工作:{
类型:对象,
验证器:(值)=>[“正在进行”、“完成”、“错误”]。每个((状态)=>值的类型[状态]==“数字”)
},
进展:{
类型:数字,
必填项:true
},
api:{
类型:Api,
必填项:true
}
},
数据:()=>({
计时器:空
}),
方法:{
异步刷新进度(){
this.jobs=等待this.api.getJobsNumbers({model:this.model});
}
},
创建(){
this.timer=setInterval(()=>this.refreshProgress(),30000);
},
销毁(){
clearInterval(这个计时器);
}
};
所以我在寻找建议,因为我是VueJS的初学者,需要描述和更改用途问题缺少确切的警告文本,所以我猜您提到的警告可能是这样的: [Vue warn]:避免直接改变道具,因为每当父组件重新渲染时,该值将被覆盖。相反,使用基于道具值的数据或计算属性。道具变异:“工作” 换句话说,您正在子组件中改变父组件的状态,这不是一个好主意,这就是Vue警告您的原因 有几种方法可以修复它:
jobs
prop,而是触发一个传递新状态(从API调用返回)的自定义事件作为参数。父级需要处理事件并使用新值更新其自身状态(更新将通过prop返回子组件)打印机
组件将是唯一将变异作业
对象的位置,则可以变异对象的属性,而不是在没有任何警告的情况下替换整个对象。这是可能的,但不推荐有关更多信息,请参见或查看控制台中出现的错误?vue.runtime.esm.js?2b0e:619[vue warn]:缺少必需的道具:“model”:在-->src/App.vue warn@vue.runtime.esm.js?2b0e:619 vue.runtime.esm.js?2b0e:619[vue warn]:缺少必需的道具:“ip”在-->中找到src/App.vue warn@vue.runtime.esm.js?2b0e:619 vue.runtime.esm.js?2b0e:619[vue warn]:缺少必需的道具:在-->中找到的“进度”在src/App.vue中使用组件的部分代码(模板)更新您的问题。。。。