Composants - vue.js

Auteur: Brouettelover 2022-06-20 11:45:06
Categories: > Tags:

Composants

Composants basique - formulaire

Création d’un composant basique sous forme de formulaire avec l’utilisation d’un template et d’une variable

HTML

<login-form />
<!-- login-form est le composant que j'ai créé -->

Script

//à mettre après la création de l'app (let app = Vue.createApp({...})
app.component('login-form', { //nom de mon composant "login-form"
  template:` //structure html interne
  <div>
    <h1>Composants - vue.js</h1>
    <input type="email" />
    <input type="password" />
  </div>
  `,
  data() {
    return {
      title: 'Login form' //Variable interne du composant
    }
  }
})

Composants basique - formulaire méthode

Création d’un composant basique - avec une méthode

HTML

<login-form />

Script

//à mettre après la création de l'app (let app = Vue.createApp({...})
app.component('login-form', {
  template:`
  <form @submit.prevent="handleSubmit"> // @submit envoie le formulaire
  // .prevent empêche l'actualisation de la page
  //handleSubmit est ma méthode
    <h1>Composants - vue.js</h1>
    <input type="email" />
    <input type="password" />
    <button>Log in</button>
  </form>
  `,
  data() {
    return {
      title: 'Login form'
    }
  },
  methods: {
    handleSubmit(){
        console.log('Submitted') //affiche Submitted quand la méthode est appelée
    }
  }
})

Composants basique - formulaire affichage

Création d’un composant basique - avec affichage à l’envoie

HTML

<login-form />

Script

//à mettre après la création de l'app (let app = Vue.createApp({...})
app.component('login-form', {
  template:`
  <form @submit.prevent="handleSubmit">
    <h1>Composants - vue.js</h1>
    <input type="email" v-model="email" /> //change la valeur de la variable email
    <input type="password" v-model="password" /> //change la valeur de la variable password
    <button>Log in</button>
  </form>
  `,
  data() {
    return {
      title: 'Login form',
      email: '',
      password: ''
    }
  },
  methods: {
    handleSubmit(){
        console.log(this.email, this.password) //affiche les valeurs contenues dans email et password
    }
  }
})