1
votes

Passer la variable au composant VueJS

J'ai besoin de transmettre une variable à un composant. Ma configuration est la suivante:

Principal: Meet.vue

export default {
  data () {
    return {
      search: [how to access the **searchTerm** here?]

Sous: Category.vue :

<html>
 <div class="carousel-cell">
    <Category :searchTerm="woman"></Category>
    </div>
 <div class="carousel-cell">
    <Category :searchTerm="men"></Category>
    </div>
[..]
<script>
import Category from './Category'
export default {
  components: {
    Category
  },

Comment accéder au searchTerm depuis Meet.vue dans Category.vue?


3 Réponses :


1
votes

Vous utilisez des props , donc la réponse est:

export default{
    props: ['searchTerm'],

il peut ensuite être utilisé directement.


0 commentaires

1
votes

Faites comme ci-dessous en appelant le composant Category .

Ici : search: "woman" signifie mot de passe woman comme valeur de la propriété du composant Category .

Puis dans le composant Category :

export default {
  props: [search], //No checking of data type and it's not requried
  //Everything else

ou

export default {
  props: {
    search: {type: string, required: true}
    //Here it will give error if the search is passed anything but string
    //And if search is not passed it will give error. 
  }
  //Everything else

p >


0 commentaires

3
votes

Vous devrez introduire cette propriété searchTerm dans votre composant Category comme décrit dans le Documentation VueJS

Dans Category.vue

props: ['searchTerm'],
data: function () {
  return {
    // Write on search variable if needed
    search: this.searchTerm
  }
}

Si vous voulez en appliquer validation sur votre accessoire

export default {
  props: {
    searchTerm: {
      type: String,
      required: false,
      // If not required, it's possible to give a default value
      default: "woman"
    },
  }

  // Your component code (computed, methods, watch, ...)
}

Vous pouvez ensuite lire votre accessoire avec this.searchTerm . Vous pouvez également le lire directement dans avec {{searchTerm}} par exemple.


Si à certains point que vous devrez écrire sur l'un de vos accessoires, il est préférable de copier sa valeur sur une variable locale et de travailler avec elle

export default {
  props: ['searchTerm'],

  // Your component code (computed, methods, watch, ...)
}


2 commentaires

Merci pour cet exemple. Existe-t-il un moyen de transmettre le searchTerm après sa modification dans le meet.vue ? J'ai essayé v-bind sans succès:

`


@Tom Je vous suggère de regarder votre accessoire dans votre composant Catégorie. Vous pouvez avoir un exemple ici stackoverflow.com/questions/44584292/… - et vous pouvez consulter la documentation pour comprendre comment cela fonctionne: vuejs.org/v2/guide/computed.html#Computed-vs-Watched-Propert‌ y