【技术积累】Vue.js中的核心知识

news2024/11/15 3:52:16

Vue的生命周期

 

Vue中的生命周期是指组件从创建到销毁的整个过程中,会触发一系列的钩子函数

Vue2中的生命周期

Vue2中的生命周期钩子函数是在组件的不同阶段执行的特定函数。这些钩子函数允许开发者在组件的不同生命周期阶段执行自定义的逻辑。

Vue2中的生命周期钩子函数可以分为8个阶段,按照执行顺序依次是:

  1. beforeCreate:在实例初始化之后,数据观测和事件配置之前被调用。在这个阶段,组件的数据和方法还未初始化,无法访问到组件实例的属性和方法。

  2. created:在实例创建完成后被调用。在这个阶段,组件的数据和方法已经初始化完成,可以访问到组件实例的属性和方法。但是此时组件还未挂载到DOM上。

  3. beforeMount:在组件挂载到DOM之前被调用。在这个阶段,组件已经完成了模板的编译,但是还未将组件的模板渲染到真实的DOM中。

  4. mounted:在组件挂载到DOM之后被调用。在这个阶段,组件的模板已经被渲染到真实的DOM中,可以进行DOM操作和访问DOM元素。

  5. beforeUpdate:在组件更新之前被调用。在这个阶段,组件的数据发生了变化,但是DOM尚未更新。可以在这个阶段进行数据的修改和操作。

  6. updated:在组件更新之后被调用。在这个阶段,组件的数据已经更新完成,DOM也已经更新。可以进行DOM操作和访问DOM元素。

  7. beforeDestroy:在组件销毁之前被调用。在这个阶段,组件实例仍然可用,可以进行一些清理工作,如清除定时器、取消订阅等。

  8. destroyed:在组件销毁之后被调用。在这个阶段,组件实例已经被销毁,无法再访问到组件实例的属性和方法。

除了这些常用的生命周期钩子函数外,Vue2还提供了一些其他的钩子函数,如activated和deactivated,用于处理组件在keep-alive组件中的缓存和激活状态的切换。

通过在这些生命周期钩子函数中编写逻辑,开发者可以在组件的不同阶段执行自定义的操作,如初始化数据、发送请求、订阅事件、操作DOM等。这些生命周期钩子函数的使用可以帮助开发者更好地控制组件的行为和交互。

beforeCreate

在Vue2中,beforeCreate是一个生命周期钩子函数,它在实例被创建之初被调用。在这个阶段,实例的数据观测和事件机制都尚未初始化,因此在beforeCreate中无法访问到data、computed、methods等实例属性和方法。

下面是一个案例来说明beforeCreate的使用:

<template>
  <div>
    <h1>{{ message }}</h1>
  </div>
</template>

<script>
export default {
  beforeCreate() {
    console.log("beforeCreate hook");
    this.message = "Hello Vue!";
  },
  created() {
    console.log("created hook");
  },
  data() {
    return {
      message: ""
    };
  }
};
</script>

<style scoped>
h1 {
  color: blue;
}
</style>

在上面的代码中,我们定义了一个Vue组件,其中使用了beforeCreate钩子函数。在beforeCreate中,我们打印了一条消息并给message属性赋值。然后在模板中使用了message属性来显示文本。

当我们运行这个组件时,控制台会输出"beforeCreate hook",然后页面上会显示"Hello Vue!"。

解释代码:

- 在beforeCreate钩子函数中,我们可以执行一些初始化的操作,但是此时实例的数据和方法还没有被初始化,因此无法访问data、computed、methods等属性和方法。

- 在created钩子函数中,实例的数据和方法已经被初始化,可以访问data、computed、methods等属性和方法。

需要注意的是,beforeCreate钩子函数是在实例被创建之前被调用的,因此在这个阶段无法访问到实例的DOM元素。如果需要操作DOM元素,可以在mounted钩子函数中进行操作。

created函数

在Vue2中,created是一个生命周期钩子函数,它在实例被创建之后被调用。在这个阶段,实例的数据观测和事件机制都已经初始化完成,可以访问到data、computed、methods等实例属性和方法。

下面是一个案例来说明created的使用:

<template>
  <div>
    <h1>{{ message }}</h1>
  </div>
</template>

<script>
export default {
  created() {
    console.log("created hook");
    this.message = "Hello Vue!";
  },
  data() {
    return {
      message: ""
    };
  }
};
</script>

<style scoped>
h1 {
  color: blue;
}
</style>

在上面的代码中,我们定义了一个Vue组件,其中使用了created钩子函数。在created中,我们打印了一条消息并给message属性赋值。然后在模板中使用了message属性来显示文本。

当我们运行这个组件时,控制台会输出"created hook",然后页面上会显示"Hello Vue!"。

解释代码:
- 在created钩子函数中,实例的数据和方法已经被初始化,可以访问data、computed、methods等属性和方法。
- 在created钩子函数中,我们可以执行一些初始化的操作,例如发送网络请求、订阅事件等。
- 在created钩子函数中,我们可以对实例的属性进行修改和操作,例如给message属性赋值。

需要注意的是,created钩子函数是在实例被创建之后被调用的,因此在这个阶段可以访问到实例的DOM元素。如果需要操作DOM元素,可以在mounted钩子函数中进行操作。

beforeMount

在Vue2中,beforeMount是一个生命周期钩子函数,它在实例被挂载到DOM之前被调用。在这个阶段,模板已经编译完成,但是尚未将实例挂载到DOM上。

下面是一个案例来说明beforeMount的使用:

<template>
  <div>
    <h1>{{ message }}</h1>
  </div>
</template>

<script>
export default {
  beforeMount() {
    console.log("beforeMount hook");
    this.message = "Hello Vue!";
  },
  mounted() {
    console.log("mounted hook");
  },
  data() {
    return {
      message: ""
    };
  }
};
</script>

<style scoped>
h1 {
  color: blue;
}
</style>

在上面的代码中,我们定义了一个Vue组件,其中使用了beforeMount钩子函数。在beforeMount中,我们打印了一条消息并给message属性赋值。然后在模板中使用了message属性来显示文本。

当我们运行这个组件时,控制台会输出"beforeMount hook",然后页面上会显示"Hello Vue!"。

解释代码:
- 在beforeMount钩子函数中,模板已经编译完成,但是尚未将实例挂载到DOM上,因此无法访问到实例的DOM元素。
- 在beforeMount钩子函数中,我们可以对实例的属性进行修改和操作,例如给message属性赋值。
- 在mounted钩子函数中,实例已经被挂载到DOM上,可以访问到实例的DOM元素。

需要注意的是,beforeMount钩子函数是在实例被挂载到DOM之前被调用的,因此在这个阶段无法访问到实例的DOM元素。如果需要操作DOM元素,可以在mounted钩子函数中进行操作。

mounted

在Vue2中,mounted是一个生命周期钩子函数,它在实例被挂载到DOM之后被调用。在这个阶段,实例已经被挂载到DOM上,可以访问到实例的DOM元素。

下面是一个案例来说明mounted的使用:

<template>
  <div>
    <h1>{{ message }}</h1>
  </div>
</template>

<script>
export default {
  mounted() {
    console.log("mounted hook");
    this.message = "Hello Vue!";
  },
  data() {
    return {
      message: ""
    };
  }
};
</script>

<style scoped>
h1 {
  color: blue;
}
</style>

在上面的代码中,我们定义了一个Vue组件,其中使用了mounted钩子函数。在mounted中,我们打印了一条消息并给message属性赋值。然后在模板中使用了message属性来显示文本。

当我们运行这个组件时,控制台会输出"mounted hook",然后页面上会显示"Hello Vue!"。

解释代码:
- 在mounted钩子函数中,实例已经被挂载到DOM上,可以访问到实例的DOM元素。
- 在mounted钩子函数中,我们可以执行一些需要操作DOM元素的操作,例如获取DOM元素的尺寸、绑定事件等。
- 在mounted钩子函数中,我们可以对实例的属性进行修改和操作,例如给message属性赋值。

需要注意的是,mounted钩子函数是在实例被挂载到DOM之后被调用的,因此在这个阶段可以访问到实例的DOM元素。如果需要在实例被挂载到DOM之前执行一些操作,可以使用beforeMount钩子函数。

beforeUpdate

在Vue2中,beforeUpdate是一个生命周期钩子函数,它在数据更新之前被调用。在这个阶段,实例的数据已经发生了改变,但是DOM尚未更新。

下面是一个案例来说明beforeUpdate的使用:

<template>
  <div>
    <h1>{{ message }}</h1>
    <button @click="updateMessage">Update Message</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: "Hello Vue!"
    };
  },
  beforeUpdate() {
    console.log("beforeUpdate hook");
  },
  methods: {
    updateMessage() {
      this.message = "Updated Message";
    }
  }
};
</script>

<style scoped>
h1 {
  color: blue;
}
</style>

在上面的代码中,我们定义了一个Vue组件,其中使用了beforeUpdate钩子函数。在beforeUpdate中,我们打印了一条消息。我们还定义了一个按钮,当点击按钮时,会更新message的值。

当我们运行这个组件时,当点击按钮时,控制台会输出"beforeUpdate hook",然后页面上会显示"Updated Message"。

解释代码:
- 在beforeUpdate钩子函数中,实例的数据已经发生了改变,但是DOM尚未更新。
- 在beforeUpdate钩子函数中,我们可以执行一些在数据更新之前需要进行的操作,例如发送网络请求、更新其他数据等。

需要注意的是,beforeUpdate钩子函数是在数据更新之前被调用的,因此在这个阶段无法访问到更新后的DOM。如果需要在数据更新之后执行一些操作,可以使用updated钩子函数。

updated

在Vue2中,updated是一个生命周期钩子函数,它在数据更新之后被调用。在这个阶段,实例的数据已经发生了改变,并且DOM也已经更新完成。

下面是一个案例来说明updated的使用:

<template>
  <div>
    <h1>{{ message }}</h1>
    <button @click="updateMessage">Update Message</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: "Hello Vue!"
    };
  },
  updated() {
    console.log("updated hook");
  },
  methods: {
    updateMessage() {
      this.message = "Updated Message";
    }
  }
};
</script>

<style scoped>
h1 {
  color: blue;
}
</style>

在上面的代码中,我们定义了一个Vue组件,其中使用了updated钩子函数。在updated中,我们打印了一条消息。我们还定义了一个按钮,当点击按钮时,会更新message的值。

当我们运行这个组件时,当点击按钮时,页面上会显示"Updated Message",并且控制台会输出"updated hook"。

解释代码:
- 在updated钩子函数中,实例的数据已经发生了改变,并且DOM也已经更新完成。
- 在updated钩子函数中,我们可以执行一些在数据更新之后需要进行的操作,例如操作更新后的DOM元素、执行一些额外的逻辑等。

需要注意的是,updated钩子函数是在数据更新之后被调用的,因此在这个阶段可以访问到更新后的DOM。如果需要在数据更新之前执行一些操作,可以使用beforeUpdate钩子函数。

beforeDestroy

在Vue2中,beforeDestroy是一个生命周期钩子函数,它在实例销毁之前被调用。在这个阶段,实例仍然完全可用,可以访问到实例的属性和方法。

下面是一个案例来说明beforeDestroy的使用:

<template>
  <div>
    <h1>{{ message }}</h1>
    <button @click="destroyComponent">Destroy Component</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: "Hello Vue!"
    };
  },
  beforeDestroy() {
    console.log("beforeDestroy hook");
  },
  methods: {
    destroyComponent() {
      this.$destroy();
    }
  }
};
</script>

<style scoped>
h1 {
  color: blue;
}
</style>

在上面的代码中,我们定义了一个Vue组件,其中使用了beforeDestroy钩子函数。在beforeDestroy中,我们打印了一条消息。我们还定义了一个按钮,当点击按钮时,会销毁组件。

当我们运行这个组件时,当点击按钮时,控制台会输出"beforeDestroy hook",然后组件会被销毁。

解释代码:
- 在beforeDestroy钩子函数中,实例仍然完全可用,可以访问到实例的属性和方法。
- 在beforeDestroy钩子函数中,我们可以执行一些在实例销毁之前需要进行的操作,例如清除定时器、取消订阅等。

需要注意的是,beforeDestroy钩子函数是在实例销毁之前被调用的,因此在这个阶段实例仍然可用。如果需要在实例销毁之后执行一些操作,可以使用destroyed钩子函数。

destoryed

在Vue2中,destroyed是一个生命周期钩子函数,它在实例销毁之后被调用。在这个阶段,实例已经被完全销毁,无法再访问到实例的属性和方法。

下面是一个案例来说明destroyed的使用:

<template>
  <div>
    <h1>{{ message }}</h1>
    <button @click="destroyComponent">Destroy Component</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: "Hello Vue!"
    };
  },
  destroyed() {
    console.log("destroyed hook");
  },
  methods: {
    destroyComponent() {
      this.$destroy();
    }
  }
};
</script>

<style scoped>
h1 {
  color: blue;
}
</style>

在上面的代码中,我们定义了一个Vue组件,其中使用了destroyed钩子函数。在destroyed中,我们打印了一条消息。我们还定义了一个按钮,当点击按钮时,会销毁组件。

当我们运行这个组件时,当点击按钮时,组件会被销毁,控制台会输出"destroyed hook"。

解释代码:
- 在destroyed钩子函数中,实例已经被完全销毁,无法再访问到实例的属性和方法。
- 在destroyed钩子函数中,我们可以执行一些在实例销毁之后需要进行的操作,例如清除全局事件监听器、释放资源等。

需要注意的是,destroyed钩子函数是在实例销毁之后被调用的,因此在这个阶段无法再访问到实例的属性和方法。如果需要在实例销毁之前执行一些操作,可以使用beforeDestroy钩子函数。

Vue3中的生命周期

Vue 3的生命周期相对于Vue 2有所改变,主要是为了更好地支持Composition API。以下是Vue 3的生命周期:

  1. setup:在组件实例化之前被调用。在这个阶段,可以进行组件的初始化工作,包括响应式数据的设置、计算属性的定义、方法的定义等。

  2. beforeCreate:在组件实例创建之前被调用。在这个阶段,可以进行一些初始化工作,但是无法访问到响应式数据和组件实例。

  3. created:在组件实例创建完成后被立即调用。在这个阶段,可以访问到响应式数据和组件实例,可以进行一些数据的初始化操作。

  4. beforeMount:在组件挂载开始之前被调用。在这个阶段,模板已经编译完成,但是还未挂载到页面上。

  5. mounted:在组件挂载完成后被调用。在这个阶段,组件已经被挂载到页面上,可以进行DOM操作。

  6. beforeUpdate:在组件更新之前被调用。在这个阶段,可以进行一些数据的修改操作。

  7. updated:在组件更新之后被调用。在这个阶段,可以执行依赖于DOM的操作。

  8. beforeUnmount:在组件卸载之前被调用。在这个阶段,组件仍然可用,可以进行一些清理工作。

  9. unmounted:在组件卸载之后被调用。在这个阶段,组件的指令和事件监听器已经被移除,组件实例被销毁。

通过这些生命周期钩子函数,我们可以在不同的阶段执行相应的操作,比如在setup阶段进行组件的初始化,mounted阶段进行DOM操作,beforeUnmount阶段进行资源清理等。同时,Vue 3还引入了更灵活的Composition API,可以更好地组织和复用组件逻辑。

beforeMount

在Vue3中,`beforeMount`是一个选项式API的生命周期函数,它在挂载开始之前被调用。在`beforeMount`阶段,模板编译已完成,但是尚未将模板渲染到DOM中。

下面是一个使用`beforeMount`的案例,通过在`beforeMount`中修改DOM元素的样式来展示其使用方法:

<template>
  <div>
    <p ref="message">{{ message }}</p>
  </div>
</template>

<script setup>
import { onBeforeMount, ref } from 'vue';

const message = ref('Hello, Vue3!');

onBeforeMount(() => {
  console.log('beforeMount hook');
  const messageElement = document.querySelector('#message');
  messageElement.style.color = 'red';
});
</script>

<style scoped>
/* 样式 */
</style>

在上述代码中,我们首先导入了`onBeforeMount`和`ref`函数。然后,在`onBeforeMount`函数中,我们打印了一条消息,并通过`document.querySelector`方法获取到`<p>`元素的引用,然后修改其样式为红色。

当组件挂载开始之前,`beforeMount`函数会被调用,控制台会输出'beforeMount hook',同时`<p>`元素的文字颜色会变为红色。

需要注意的是,`beforeMount`函数中可以访问到组件实例的数据和方法,因为此时组件实例已经创建完成。同时,`beforeMount`函数中可以直接操作DOM元素,但是建议使用Vue的响应式数据来管理DOM的状态,以便更好地利用Vue的特性。

总结:`beforeMount`函数在挂载开始之前被调用,可以用于在DOM渲染之前进行一些操作,例如修改DOM元素的样式、添加事件监听器等。

mounted

在Vue3中,`mounted`是一个选项式API的生命周期函数,它在组件挂载到DOM之后调用。在`mounted`阶段,组件已经被渲染到DOM中,可以进行DOM操作和访问DOM元素。

下面是一个使用`mounted`的案例,通过在`mounted`中添加一个事件监听器来展示其使用方法:

<template>
  <div>
    <button ref="button">Click me</button>
  </div>
</template>

<script setup>
import { onMounted, ref } from 'vue';

onMounted(() => {
  console.log('mounted hook');
  const buttonElement = document.querySelector('#button');
  buttonElement.addEventListener('click', handleClick);
});

function handleClick() {
  console.log('Button clicked');
}
</script>

<style scoped>
/* 样式 */
</style>

在上述代码中,我们使用`onMounted`函数来注册一个回调函数,在组件挂载到DOM之后调用。在回调函数中,我们打印了一条消息,并通过`document.querySelector`方法获取到`<button>`元素的引用,然后添加了一个点击事件的监听器。

当组件挂载到DOM之后,`mounted`函数会被调用,控制台会输出'mounted hook'。同时,当点击按钮时,控制台会输出'Button clicked'。

需要注意的是,`mounted`函数中可以访问到组件实例的数据和方法,因为此时组件已经被渲染到DOM中。同时,`mounted`函数中可以进行一些需要访问DOM元素的操作,例如添加事件监听器、初始化第三方库等。

总结:`mounted`函数在组件挂载到DOM之后调用,可以用于进行一些需要访问DOM元素的操作,例如添加事件监听器、初始化第三方库等。

beforeUpdate

在Vue3中,`beforeUpdate`是一个选项式API的生命周期函数,它在组件更新之前调用。在`beforeUpdate`阶段,组件的数据已经发生了改变,但是DOM尚未更新。

下面是一个使用`beforeUpdate`的案例,通过在`beforeUpdate`中打印更新前后的数据来展示其使用方法:

<template>
  <div>
    <p>{{ message }}</p>
    <button @click="updateMessage">Update Message</button>
  </div>
</template>

<script setup>
import { onBeforeUpdate, ref } from 'vue';

const message = ref('Hello, Vue3!');

onBeforeUpdate(() => {
  console.log('beforeUpdate hook');
  console.log('Previous message:', message.value);
});

function updateMessage() {
  message.value = 'Updated message';
}
</script>

<style scoped>
/* 样式 */
</style>

在上述代码中,我们使用`beforeUpdate`函数来注册一个回调函数,在组件更新之前调用。在回调函数中,我们打印了一条消息,并输出了更新前的`message`的值。

在模板中,我们展示了`message`的值,并提供了一个按钮,点击按钮会调用`updateMessage`函数来更新`message`的值。

当点击按钮时,`updateMessage`函数会被调用,`message`的值会发生改变。然后,`beforeUpdate`函数会被调用,控制台会输出'beforeUpdate hook'和'Previous message: Hello, Vue3!',即更新前的`message`的值。

需要注意的是,`beforeUpdate`函数中可以访问到组件实例的数据和方法,因为此时组件的数据已经发生了改变。同时,`beforeUpdate`函数中可以进行一些在组件更新之前的操作,例如获取更新前的数据、做一些准备工作等。

总结:`beforeUpdate`函数在组件更新之前调用,可以用于进行一些在组件更新之前的操作,例如获取更新前的数据、做一些准备工作等。

updated

在Vue3中,`updated`是一个选项式API的生命周期函数,它在组件更新完成后调用。在`updated`阶段,组件的数据已经发生了改变,并且DOM也已经更新完毕。

下面是一个使用`updated`的案例,通过在`updated`中打印更新后的数据来展示其使用方法:

<template>
  <div>
    <p>{{ message }}</p>
    <button @click="updateMessage">Update Message</button>
  </div>
</template>

<script setup>
import { onUpdated, ref } from 'vue';

const message = ref('Hello, Vue3!');

onUpdated(() => {
  console.log('updated hook');
  console.log('Updated message:', message.value);
});

function updateMessage() {
  message.value = 'Updated message';
}
</script>

<style scoped>
/* 样式 */
</style>

在上述代码中,我们使用`onUpdated`函数来注册一个回调函数,在组件更新完成后调用。在回调函数中,我们打印了一条消息,并输出了更新后的`message`的值。

在模板中,我们展示了`message`的值,并提供了一个按钮,点击按钮会调用`updateMessage`函数来更新`message`的值。

当点击按钮时,`updateMessage`函数会被调用,`message`的值会发生改变。然后,`onUpdated`函数会被调用,控制台会输出'updated hook'和'Updated message: Updated message',即更新后的`message`的值。

需要注意的是,`onUpdated`函数中可以访问到组件实例的数据和方法,因为此时组件的数据已经发生了改变,并且DOM也已经更新完毕。同时,`onUpdated`函数中可以进行一些在组件更新完成后的操作,例如获取更新后的数据、执行一些额外的逻辑等。

总结:`updated`函数在组件更新完成后调用,可以用于进行一些在组件更新完成后的操作,例如获取更新后的数据、执行一些额外的逻辑等。

beforeUnmount

在Vue3中,beforeUnmount是一个选项式API的生命周期函数,它在组件卸载之前调用。在beforeUnmount阶段,组件即将从DOM中被移除。

下面是一个使用`beforeUnmount`的案例,通过在`beforeUnmount`中执行一些清理操作来展示其使用方法:

<template>
  <div>
    <p>{{ message }}</p>
    <button @click="unmountComponent">Unmount Component</button>
  </div>
</template>

<script setup>
import { onBeforeUnmount, ref } from 'vue';

const message = ref('Hello, Vue3!');

onBeforeUnmount(() => {
  console.log('onBeforeUnmount hook');
  // 执行一些清理操作
});

function unmountComponent() {
  // 卸载组件
}
</script>

<style scoped>
/* 样式 */
</style>

在上述代码中,我们使用`onBeforeUnmount`函数来注册一个回调函数,在组件卸载之前调用。在回调函数中,我们打印了一条消息,并可以执行一些清理操作,例如取消订阅、清除定时器等。

在模板中,我们展示了`message`的值,并提供了一个按钮,点击按钮会调用`unmountComponent`函数来卸载组件。

当点击按钮时,`unmountComponent`函数会被调用,组件会被卸载。然后,`onBeforeUnmount`函数会被调用,控制台会输出'onBeforeUnmount hook',即组件即将被卸载。

需要注意的是,`onBeforeUnmount`函数中可以访问到组件实例的数据和方法,因为此时组件即将被卸载。同时,`onBeforeUnmount`函数中可以进行一些在组件卸载之前的清理操作,例如取消订阅、清除定时器等。

总结:`onBeforeUnmount`函数在组件卸载之前调用,可以用于进行一些在组件卸载之前的清理操作,例如取消订阅、清除定时器等。

unmounted

在Vue3中,`unmounted`是一个选项式API的生命周期函数,它在组件卸载完成后调用。在`unmounted`阶段,组件已经从DOM中被移除。

下面是一个使用`unmounted`的案例,通过在`unmounted`中执行一些清理操作来展示其使用方法:

<template>
  <div>
    <p>{{ message }}</p>
    <button @click="unmountComponent">Unmount Component</button>
  </div>
</template>

<script setup>
import { onUnmounted, ref } from 'vue';

const message = ref('Hello, Vue3!');

onUnmounted(() => {
  console.log('unmounted hook');
  // 执行一些清理操作
});

function unmountComponent() {
  // 卸载组件
}
</script>

<style scoped>
/* 样式 */
</style>

在上述代码中,我们使用`onUnmounted`函数来注册一个回调函数,在组件卸载完成后调用。在回调函数中,我们打印了一条消息,并可以执行一些清理操作,例如取消订阅、清除定时器等。

在模板中,我们展示了`message`的值,并提供了一个按钮,点击按钮会调用`unmountComponent`函数来卸载组件。

当点击按钮时,`unmountComponent`函数会被调用,组件会被卸载。然后,`onUnmounted`函数会被调用,控制台会输出'unmounted hook',即组件已经被卸载。

需要注意的是,`onUnmounted`函数中可以访问到组件实例的数据和方法,因为此时组件已经被卸载。同时,`onUnmounted`函数中可以进行一些在组件卸载完成后的清理操作,例如取消订阅、清除定时器等。

总结:`unmounted`函数在组件卸载完成后调用,可以用于进行一些在组件卸载完成后的清理操作,例如取消订阅、清除定时器等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/801737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境5

#尝试搭建K210的Micropython开发环境&#xff08;Win10&#xff09; #实验程序之三&#xff1a;更新频率演示 #尝试搭建K210的Micropython开发环境&#xff08;Win10&#xff09; #实验程序之三&#xff1a;更新频率演示from Maix import freqcpu_freq, kpu_freq freq.get() …

数学建模-蒙特卡洛模拟

%% 蒙特卡罗用于模拟三门问题 clear;clc %% &#xff08;1&#xff09;预备知识 % randi([a,b],m,n)函数可在指定区间[a,b]内随机取出大小为m*n的整数矩阵 randi([1,5],5,8) %在区间[1,5]内随机取出大小为5*8的整数矩阵 % 2 5 4 5 3 1 4 2 %…

市面上的ipad国产触控笔怎么样?精选的性价比电容笔

要知道&#xff0c;真正的苹果品牌的那款原装电容笔&#xff0c;光是一支电容笔就价格近千元。实际上&#xff0c;平替电容笔对没有太多预算的用户是个不错的选择。一支苹果品牌的电容笔&#xff0c;价格是平替品牌的四倍&#xff0c;但电容笔的书写效果&#xff0c;却丝毫不逊…

植物一区HR | 植物生理组+转录组:揭示豆科植物响应干旱胁迫机制

PlantArray 植物高通量生理学表型监测系统 是一套以植物生理学为基础的高精度&#xff0c;高通量&#xff0c;自动化表型监测系统&#xff0c;集合实验设置、数据分析、决策工具于一身&#xff0c;能够高通量实时动态监测并进行全天候生理及环境参数采集&#xff0c;是进行植物…

使用 element-resize-detector 插件实现左侧菜单展开收起时,Echarts图表自适应功能

问题&#xff1a; 在项目中开发 echarts 图表的时候遇到了一个问题&#xff0c;就是左侧菜单展开和收起的时候图表没办法自适应的改变宽度&#xff0c;导致图表不能完美展示。 方案&#xff1a; 使用 element-resize-detector 插件来实现菜单展开或收起时候的图表自适应更新…

2024届IC秋招兆易创新数字IC后端笔试面试题

数字IC后端实现PR阶段设计导入需要哪些文件&#xff1f; 设计导入需要的文件如下图所示。这个必须熟练掌握。只要做过后端训练营项目的&#xff0c;对这个肯定是比较熟悉的。大家还要知道每个input文件的作用是什么。 在吾爱IC后端训练营Cortexa7core项目中&#xff0c;你认为…

ECharts柱状图实现从y轴指定数渲染,而不是始终从y=0处渲染

咱们先看看对比图&#xff0c;下图是echarts统计图放入数据不做处理的结果&#xff08;只看蓝色柱子即可&#xff09;&#xff0c;可以看到柱状图不管数据时正数还是负数&#xff0c;都是以y0为图形的起点 下图是我想要实现的效果&#xff0c;相当于是以y轴最小值为起点渲染柱…

如何将数字高程模型加载到地图中查看,并进行在线编辑和分享?

四维轻云是一款地理空间数据在线管理平台&#xff0c;具有地理空间数据的在线管理、查看及分享等功能。在四维轻云平台中&#xff0c;用户可以将数据加载至地图中查看&#xff0c;并使用渲染、视图、标绘等工具。 现在&#xff0c;小编就来告诉大家如何将数字高程模型加载到地…

git从主仓库同步到fork仓库

git从主仓库同步到fork仓库 1. fork远程仓库到本地仓库2. 将远程仓库添加到本地3. 更新本地项目主库地址4. 将远程仓库更新到本地仓库5. 将本地仓库合到远程分支 1. fork远程仓库到本地仓库 方式一&#xff1a;通过git命令 git clone fork库地址方式二&#xff1a;通过git页面…

home-assistant整合sso

其他软件都可以通过nginx直接做代理添加鉴权&#xff0c;但是这个hass果然是用户安全隐私很强&#xff0c;做代理需要配置白名单&#xff0c;而且支持的三方鉴权都不太适合我的需求&#xff0c;非要改源码才行&#xff0c;后来我发现不用改源码的折中方式 参考文章 External …

移动端适配rem

1.安装amfe-flexible和postcss-pxtorem&#xff0c; npm install amfe-flexible --save npm install postcss-pxtorem5.1.1 (这里我使用的postcss-pxtorem是5.1.1版本)或者在pageage.json中写入 "amfe-flexible": "^2.2.1","postcss-pxtorem": …

QT 视图(view)模型(model)汇总

QStringListModel和QListView UI界面 widget头文件 #ifndef WIDGET_H #define WIDGET_H#include <QStringList> #include <QStringListModel> #include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : publi…

全面升级 | MoHub 2023b版本正式上线

为了满足装备数字化发展需求&#xff0c;为知识模型化与模型开放共享提供自主平台&#xff0c;同元软控于2023年初推出来工业知识模型互联服务平台MoHub。7月27日&#xff0c;工业知识模型互联平台MoHub 2023b如期升级上线。此次升级&#xff0c;面向平台用户重点在云化工具、知…

PDU+远控,企业如何应用工业级智能PDU远程赋能业务?

在很多企业级业务场景下&#xff0c;如何保障相关业务设备的稳定供电非常重要&#xff0c;插座也就成为了这些业务体系中的核心基建。 为了保证相关设备供电的稳定&#xff0c;并且实现高效的远程管理&#xff0c;很多企业级的业务场景会部署专业的智能PDU&#xff0c;而在众多…

医疗器械维修工程师心得

彩虹医械维修技能班9月将开展本年第三期长期班&#xff0c;目前咨询人员也陆续多了起来&#xff0c;很多刚了解到医疗行业的&#xff0c;自身也没有多少相关的基础&#xff0c;在咨询时会问到没有基础能否学的会&#xff1f; 做了这行业的都知道&#xff0c;无论多么复杂的设备…

探讨缓存一致性问题

探讨缓存一致性问题 本文只探讨只读缓存&#xff0c;即只对缓存进行读取、写入、删除&#xff0c;不进行更新操作 前言 数据库的读写性能上限是比较低的&#xff0c;工程中经常在数据库前面加一层缓存&#xff0c;可能是Redis或者本地缓存。既然有缓存&#xff0c;那么不可避免…

归并交换基数简单选择排序

文章目录 1 交换排序1.1 冒泡排序1.1.1 冒泡排序算法1.1.2 性能分析 1.2 快速排序1.2.1 快排的算法1.2.2 性能分析1.2.3 快排的特点 2 简单选择排序2.1 简单排序算法2.1.1 性能分析 2.2 堆排序2.2.1 堆的调整2.2.2 筛选过程算法2.2.3 堆的建立算法2.2.4 性能分析 3 归并排序3.1…

CertGetCertificateChain trust error CERT_TRUST_REVOCATION_STATUS_UNKNOWN

执行命令&#xff1a; curl --cacert http_ca.crt -u elastic https://localhost:9200 结果报错了 直接访问https://localhost:9200/ &#xff0c;正常 解决办法&#xff1a; curl --cacert http_ca.crt -u elastic https://localhost:9200 --insecure

微信小程序:实现提示窗确定,取消执行不同操作(消息提示确认取消)showModal

效果 代码 wx.showModal({title: 提示,content: 是否确认退出,success: function (res) {if (res.confirm) {console.log(用户点击确定)} else if (res.cancel) {console.log(用户点击取消)}}})

linux 故障定位

linux 故障定位 1. cpu1.1 说明1.2 分析工具1.3 使用方式 2. 内存2.1 说明2.2 分析工具2.3 使用方式 3. I/O3.1 说明3.2 分析工具3.3 使用方式 4. 网络4.1 说明4.2 分析工具4.3 使用方式 5. 系统负载5.1 说明5.2 分析工具5.3 使用方式 6. 火焰图6.1 说明6.2 安装依赖库6.3 安装…