当前位置: 首页 > 面试题库 >

Vue 2-变异道具vue-warn

拓拔飞飙
2023-03-14
问题内容

Vue,Laravel和AJAX遇到 了以下错误:

vue.js:2574 [Vue警告]:避免直接更改道具,因为每当父组件重新渲染时,该值就会被覆盖。而是使用基于属性值的数据或计算属性。变异的道具:“列表”(位于component中)

我在 main.js中* 有此代码 *

Vue.component('task', {
    template: '#task-template',
    props: ['list'],
    created() {
        this.list = JSON.parse(this.list);
    }
});
new Vue({
    el: '.container'
})

我知道当我覆盖列表属性时问题出在created()中,但是我是Vue的新手,所以我完全不知道如何解决它。任何人都知道如何(并请解释为什么)修复它?


问题答案:

这与以下事实有关: 在Vue 2中将局部更改 prop视为反模式

如果要在 本地 更改 prop,现在应该做的是在您的容器中声明一个data使用该props值作为其初始值的字段,然后对副本进行更改:

Vue.component('task', {
    template: '#task-template',
    props: ['list'],
    data: function () {
        return {
            mutableList: JSON.parse(this.list);
        }
    }
});

您可以在Vue.js官方指南中了解更多有关此内容的信息

注意1: 请注意,您 不能prop和使用相同的名称data,即:

data: function () { return { list: JSON.parse(this.list) } // WRONG!!

注2: 由于我觉得有一些混乱关于props和 反应,我建议你有一看这个线程



 类似资料:
  • 如何解决此错误消息: [Vue warn]:避免直接改变道具,因为每当父组件重新渲染时,该值将被覆盖。相反,使用基于道具值的数据或计算属性。道具变异:“抽屉” 父组件: 子组件:

  • 我有一个问题与我的道具editToWork: app.js:42491[Vue warn]:避免直接修改道具,因为每当父组件重新渲染时,该值将被覆盖。相反,使用基于道具值的数据或计算属性。道具正在变异:“任务编辑” 组件TaskComponent.vue 组件EditTaskComponent:

  • 我得到警告: app.js:87486[Vue警告]:避免直接更改prop,因为每当父组件重新呈现时,该值将被覆盖。相反,使用基于道具值的数据或计算属性。被变异的道具:“喜欢计数” 我的刀锋 Vue代码

  • 我有两个组件:GetAnimal.vue和DisplayAnimal.vue。显示nimal.vue显示该数据。它的工作原理是这样的:我进入,单击一个按钮,触发函数,该函数将我引导到(通过路由器推送): GetAnimal.vue: DisplayAnimal.vue: 动物被很好地展示出来: 但是,我在控制台中收到警告: 显式分配道具的行可能是警告的原因。 然而,如果我删除这一行,动物根本不会显

  • 虽然Vue Composition API RFC Reference site有许多高级使用场景,其中包括模块,但没有关于如何观看组件道具的示例? Vue Composition API RFC的主页或Github中的vuejs/Composition API中也没有提到它。 我创建了一个Codesandbox来详细说明这个问题。 编辑:虽然我的问题和代码示例最初使用的是JavaScript,但

  • 我有一个和道具同名的守望者。道具是在某个事件的父组件中动态设置的。我需要一些东西,每次在父组件上触发事件时,都会用属性值触发子组件中的某个函数,即使它设置的属性相同。是否有任何观察者选项或其他处理此类案件的方法允许我这样做? 我尝试了什么(这是在组件中): 仅在newVal与oldVal不同时打印,我需要一些函数来触发,即使它们相同。父组件如下所示: 这些是父数据和方法: