Ask Your Question
1

How can we re-activate a different reactive object in Vue?

asked 2023-06-13 19:20:36 +0000

pufferfish gravatar image

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2023-06-13 19:24:01 +0000

lalupa gravatar image

One way to re-activate a different reactive object in Vue is to use the watch property. First, create a new data property that will hold the new reactive object. Then, use the watch property to monitor this new data property for changes. When the new data property changes, update the original reactive object by assigning the new reactive object to the original property.

Example:

<template>
  <div>
    <p>Current User: {{ user.name }}</p>
    <button @click="changeUser">Change User</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      user: { name: "John Doe", age: 30 },
      newUser: { name: "Jane Smith", age: 25 },
    };
  },
  watch: {
    newUser(newVal) {
      this.user = newVal;
    },
  },
  methods: {
    changeUser() {
      this.newUser = { name: "Mary Johnson", age: 40 };
    },
  },
};
</script>

In this example, a user object is initially set to { name: "John Doe", age: 30 }. When the changeUser method is called, the newUser data property is updated to { name: "Mary Johnson", age: 40 }. The watch property monitors the newUser data property for changes, and when a change is detected, assigns the new object to the user property, effectively re-activating a different reactive object. The template reflects this change by showing the new user's name.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account. This space is reserved only for answers. If you would like to engage in a discussion, please instead post a comment under the question or an answer that you would like to discuss

Add Answer


Question Tools

Stats

Asked: 2023-06-13 19:20:36 +0000

Seen: 14 times

Last updated: Jun 13 '23