vue.js:从观察者更新数据

san*_*oco 1 javascript data-binding watch vue.js

我有以下代码:

export default {
    name: '...',
    props: ['user'],
    data() {
        return {
            userName: this.user.name
        }
    },
    watch: {
        user: (_user) => {
            this.userName = _user.name
        }
    },
    methods: {
        ...
    }
};
Run Code Online (Sandbox Code Playgroud)

userprop由父组件更新(它来自服务器的信息).如果我记录_user变量,我有一切可用.该userName道具不更新,虽然.

Vam*_*hna 6

由于您使用胖箭头功能如下:

user: (_user) => {
            this.userName = _user.name
        } 
Run Code Online (Sandbox Code Playgroud)

这个没有指向VUE实例,因此通过使用this.userName你是不是指的该userName数据中的属性.

所以使用这样的普通函数:

user: function(_user){
            this.userName = _user.name
        } 
Run Code Online (Sandbox Code Playgroud)

在vuejs文档中提到了关于使用箭头函数定义观察者的警告.你可以看看这里