Menu

Creating a reusable loader component in Vue Js

This is a simple control just to get you started creating components, once you get the hang of it, you can teach me some 🙂

<template>
    <div class="center-vh" v-if="show">
        <div class="spinner-dots">
            <span class="dot1"></span>
            <span class="dot2"></span>
            <span class="dot3"></span>
        </div>
    </div>
</template>
<script lang="ts">
import Vue from "vue";
import Component from "vue-class-component";

@Component({
  props: {
    show: Boolean   
  }
})
export default class LoaderComponent extends Vue {}
</script>

Let see how we can use this component in our main component.

<template>
    <div class="px-80 py-30">
       <!-- your other html code -->
       <Loader :show="showLoading"></Loader>
    </div>   
</template>

<script lang="ts">
import Vue from "vue";
import Component from "vue-class-component";
import Loader from "../shared/Loader.vue";
import { userService } from "../../services/UserService";

@Component({
  components: {
    Loader,
    FormMessage
  }
})
export default class LoginComponent extends Vue {
  email: string = "";
  password: string = "";
  showLoading: boolean = false;
  
  private onSubmit() {  
      this.showLoading = true;
      userService
        .login({
          Email: this.email,
          Password: this.password
        })
        .then((response :any) => {
          this.showLoading = false;
          if (!response.is_error && response.content) {
            // your login on success full login
          } else {           
            // show error message to user   
          }
        })
        .catch(error => { 
          // show error message to user   
        });
    }
  }
}
</script>

According to Vue js components should be lower case  Ex: my <Loader> should be “<loader>” instead of

Leave a comment