Рубрики
Vue хук mounted в компоненте

Пример динамической подгрузки постов

Динамическая подгрузка постов
mounted

хук mounted представляет собой обычную функцию.
Нам необходимо вызвать функцию fetchPosts для того чтобы посты подгрузились сразу при первом открытии приложения.

setTimeout
Динамическая задержка
для того чтобы видеть загрузку

isPostsLoading
модель
индикатор, которая оповещает что загрузка идёт

src\App

<template>
<div class="app">
<h1>Страница с постами</h1>
<my-button
 @click="showDialog"
 style="margin: 15px 0;" кнопка не должна прилипать к заголовку
>Создать пост</my-button>
<my-dialog v-model:show="dialogVisible">

<post-form
@create="createPost"
/>
</my-dialog>

<post-list 
:posts="posts"
@remove="removePost"
v-if="!isPostsLoading"
/>
<div v-else>Идет загрузка...</div>
<div>
</template>

<script>
import PostForm from "@/components/PostForm";
import PostList from "@/components/PostList";
import axios from "axios";
export default{
components:{
 PostList,PostForm,
}
data(){
return {
 posts:[],
 dialogVisible:false, 
 isPostsLoading:false,
}
}
methods:{
 createPost(post,second,third){
  this.posts.push(post);
  this.dialogVisible = false;
 }
 removePost(post) {
  this.posts = this.posts.filter(p => p.id !== post.id)
 },
 showDialog(){
  this.dialogVisible = true;
 },
 async fetchPosts(){
  try{
   this.isPostsLoading = true;
   setTimeout(async()=> {
   const response = await axios.get('https://jsonplaceholder.typicode.com/posts?_limit=10');
   this.posts = responce.data;
   this.isPostsLoading = false;
},1000)
  } catch(e){
   alert('ошибка')
  }
 }
},
 mounted(){
  this.fetchPosts();
 }
}
</script>

<style>
* {
 margin: 0;
 padding: 0;
 box-sizing: border-box;
}
.app{
 padding: 20px;
}
</style>
Рубрики
Vue project Vue.js Жизнь компонента Vue

Разновидности хуков в Vue

beforeCreate
хук
он вызывается в тот момент, когда компонент ещё не был создан. На этом этапе инициализируются события и инициализируется жизненный цикл. Сам хук является достаточно редким кейсом в использовании.

cretaed
хук
в этот момент в компонент добавляются различные инъекции и реактивность. В этом хуке можно делать какую то дефолтную реализацию, проверять какие то условия

Отрабатывает рендер функция

beforeMount
хук
отрабатывает до того, когда компонент монтируется в дерево

mounted
хук
отрабатывает, когда компонент полностью монтирован в дерево. Он часто используемый. Его мы можем использовать для запросов на сервер. Компонент монтировался, запрос сделали и сразу какие то данные отрисовали.

После того как компонент монтировали, в нём могут изменяться какие то данные. Соответственно компонент будет перерендереваться. Для того чтобы отслеживать эти обновления есть два хука.

beforeUpdate
хук
отрабатывает перед обновлением

update
хук
отрабатывает после

компонент демонтируется
делается очистка.
отписываемся от каких то событий, очищаем stor