数据属性"article"已被声明为prop.请改用prop默认值

Bad*_*aka 31 vuejs2

码:

export default {
    props: {
        article: {type: Object}
    },
    data () {
        return {article: this.article}
    }, 
    methods: {
        itemClick () {
            console.log('itemClick');
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

Chrome开发人员工具中的Vue2.1.10警告:数据属性"article"已声明为prop.请改用prop默认值.

Sau*_*abh 33

您已经添加article在两个地方data和props.它应该是其中之一,这就是为什么你得到错误.如果从父组件传递它,则必须将其删除,而不是将其作为props保留,如果这是本地实例数据,则将其保留在vue data块中.

export default {
  props: {
    article: {
      type: Object
    }
  },
  data() {
    return {
      article: this.article
    }
  },
  methods: {
    itemClick() {
      console.log('itemClick');
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

  • 我对您的代码感到困惑,因为它看起来与 OP 中的示例相同。我错过了什么吗? (4认同)
  • 为什么这是得票最多的,它没有解决任何问题 (3认同)

Oma*_*hag 9

一旦你article在道具中声明,你就不需要在边数据中返回它.见下文.

export default {
  props: {
    article: {type: Object}
  },

  data () {}, 

  methods: {
    itemClick () {
      console.log('itemClick');
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

  • 假设您要更改道具,这样做将导致`避免直接更改道具,因为每当父组件重新渲染时,该值就会被覆盖。而是根据道具的值使用数据或计算属性。 (4认同)

Joh*_*edy 7

如果您使用的是 TypeScript,那么您可能已经为 prop 分配了一个值。

@Component
export default class HelloWorld extends Vue {
  @Prop({ type: Array }) users = []; // wrong, do not assign to a prop
}
Run Code Online (Sandbox Code Playgroud)

改成这样

...
@Prop({ type: Array }) users;
...
Run Code Online (Sandbox Code Playgroud)