suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Schieben Sie Objekte in ein Array, eine zusammensetzbare API

Es gibt ein Projekt. Es gibt zwei Auswahlmöglichkeiten „Größe“ (groß, klein) und Menge (2/4/6).

Wenn jede Option ausgewählt ist, muss die Auswahl im Titel angezeigt werden (sagen wir klein und 4). Nachdem Sie auf die Schaltfläche „Zum Speicher hinzufügen“ geklickt haben, wird es dem Speicher hinzugefügt und auf einer anderen Seite wird eine Liste angezeigt.

Was ich versucht habe:

vue ts:

const chosenMachines = reactive([]);

const machineInfo = ref({
 size: "Standart",
 glasses: 6
})

const addToList = () => {
 // myStore.addToStoredItems(machineInfo)  ---> storage pinia
 chosenMachines.push(machineInfo.value)
}

Vorlage:

<div>Title {{ machineInfo.size  }} | {{ machineInfo.glasses }}</div>       
  <select name="size" v-model='machineInfo.size'  class='selects__select-item'>
    <option>Standart</option>
    <option>Big</option>
  </select>
  <select name="glasses" v-model.number='machineInfo.glasses' class='selects__select-item'>
    <option>6</option>
    <option>8</option>
    <option>12</option>
  </select>
 <button class='btn' @click='sendToStorage'>Add</button>

Wenn das erste Objekt und das zweite Objekt später hinzugefügt werden, wird das erste Objekt überschrieben.

P粉788765679P粉788765679258 Tage vor1672

Antworte allen(1)Ich werde antworten

  • P粉464208937

    P粉4642089372024-04-06 12:05:10

    machineInfo.value推入数组中保留对原始对象的引用。您刚刚进行了浅拷贝。对machineInfo.value的任何更新都会导致数组中的值也更新。在推入之前,您需要先进行深拷贝。

    chosenMachines.push({...machineInfo.value})
    

    许多其他方法可以进行深拷贝,具体取决于您的数据,可能有一种方法更适合。

    Antwort
    0
  • StornierenAntwort