Si je passe (une référence à) un Objet en tant que prop, est-il OK de muter les valeurs dans la prop?
Je développe une application web qui nécessitera beaucoup de valeurs à passer à un composant, et j'essaie de trouver le meilleur moyen de passer les valeurs au composant et les renvoyer au parent.
D'après tout ce que j'ai lu, muter une prop est la mauvaise façon de faire les choses, car la prochaine fois que le composant est mis à jour, les valeurs sont renvoyées au composant enfant, écrasant les mutations. Mais seule la référence à l'objet est passée, donc toute mutation des valeurs dans la prop objet se produit sur l'objet d'origine dans le composant parent. En outre, Vuejs ne se plaint pas de la mutation des props lorsque cela se produit.
const subComponent = {
name: "subComponent",
template: `
Entrée du sous-composant
`,
props: {
objectProp: {
required: false,
default: () => {return {val1: "carotte"}}
}
}
}
const aComponent = {
name: "aComponent",
template: `
val1: {{mainObject.val1}}
val2: {{mainObject.val2}}
`,
data: function() {
return{
mainObject: {
val1: "foo",
val2: "bar"
}
}
},
components: {
subComponent
}
}
new Vue({
el: "#app",
components: {
aComponent
}
})
Voici un JSFiddle montrant une mutation d'objet prop.