Home >Web Front-end >Vue.js >Use of Vue.watch function and implementation of data monitoring

Use of Vue.watch function and implementation of data monitoring

WBOY
WBOYOriginal
2023-07-26 09:03:221726browse

Use of Vue.watch function and implementation of data monitoring

Vue.js is a front-end framework that provides many practical features to simplify the front-end development process. One of them is data monitoring. Vue provides a built-in function watch for monitoring changes in Vue instance data. This article will introduce how to use the watch function, and use code examples to show how to implement the data monitoring function.

1. Basic usage of watch function

watchThe function can be defined inside the Vue instance to monitor changes in instance data. It receives two parameters: the first parameter is the data to be monitored, which can be a string or a function; the second parameter is the callback function, which will be called when the monitored data changes.

The following is a simple example:

var vm = new Vue({
    data: {
        message: 'Hello, Vue!'
    },
    watch: {
        message: function(newVal, oldVal) {
            console.log('数据发生了变化:', newVal, oldVal);
        }
    }
});

In the above code, we create a Vue instance and define a message data. In the watch option, we monitored message and specified a callback function. When message data changes, the callback function will be called.

2. Advanced usage of the watch function

In addition to basic usage, the watch function can also support more options. We can specify more options by passing an object to the watch function.

Here is an example of using the immediate option:

var vm = new Vue({
    data: {
        message: 'Hello, Vue!'
    },
    watch: {
        message: {
            handler: function(newVal, oldVal) {
                console.log('数据发生了变化:', newVal, oldVal);
            },
            immediate: true
        }
    }
});

In the above code, we define the value of watch as an object , and pass in the handler callback function and immediate options in the object. immediateThe option true means that the callback function will be executed immediately when the listener is created.

In addition to the immediate option, the watch function also supports other options, such as deep, deep:true indicates depth Monitor the internal changes of the object. For more options, check out the Vue official documentation for details.

3. Implement the data monitoring function

In Vue, data monitoring is implemented through the Object.defineProperty method. Vue internally implements data monitoring and updating by hijacking the getters and setters of data.

The following is a simplified version of the implementation example:

function watch(obj, key, callback) {
    var value = obj[key];
    Object.defineProperty(obj, key, {
        get: function() {
            return value;
        },
        set: function(newVal) {
            var oldVal = value;
            value = newVal;
            callback(newVal, oldVal);
        }
    });
}

var data = {
    message: 'Hello, Vue!'
};

watch(data, 'message', function(newVal, oldVal) {
    console.log('数据发生了变化:', newVal, oldVal);
});

In the above code, we define a watch function, which receives an object and a key, and a callback function. The Object.defineProperty method is used internally to hijack the getter and setter of the object, and the callback function is called in the set method.

Through the above example, we can see how to implement the data monitoring function through the watch function.

This article introduces how to use Vue's watch function, and shows how to implement data monitoring through code examples. The watch function can help us obtain changes in data in time and perform corresponding operations. In actual development, reasonable use of the watch function can improve the robustness and maintainability of the code. I hope this article will help you understand the use of the watch function and implement data monitoring.

The above is the detailed content of Use of Vue.watch function and implementation of data monitoring. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn