Vue: Unterklassen von Arrays unterstützen

Erstellt am 27. Dez. 2018  ·  3Kommentare  ·  Quelle: vuejs/vue

Ausführung

2.5.21

Reproduktionslink

https://codepen.io/AmrIKhudair/pen/NevxML

Schritte zum Reproduzieren

1- Erstellen Sie ein klassenerweiterndes Array und fügen Sie eine benutzerdefinierte Methode hinzu
2- instanziieren Sie eine neue Instanz der Klasse und fügen Sie sie zu den Daten hinzu
3- Versuchen Sie, die Methode für die Instanz in der Vorlage aufzurufen

Was wird erwartet?

Die Methode wird erfolgreich ausgeführt

Was passiert eigentlich?

Fehler keine Funktion

feature request

Hilfreichster Kommentar

@AmrIKhudair
Ich brauchte das auch und habe es im User-Land zum Laufen gebracht. Wenn Vue 3 ankommt, können Sie es entfernen.

export function makeReactive (obj) {
  // eslint-disable-next-line no-proto
  const proto = obj.__proto__

  Object.defineProperty(obj, '__proto__', {
    get () { return proto },
    // eslint-disable-next-line no-proto
    set (newValue) { proto.__proto__ = newValue }
  })
}
import { makeReactive } from 'util'

export default class UserCollection extends Array {
  constructor (...args) {
    super(...args)

    makeReactive(this)
  }
}

Alle 3 Kommentare

Vue 2 unterstützt derzeit keine Array-Unterklassen (Vue 3-Entwicklungszweig tut dies bereits). Ich werde dies in eine Feature-Anfrage umwandeln.

@AmrIKhudair
Ich brauchte das auch und habe es im User-Land zum Laufen gebracht. Wenn Vue 3 ankommt, können Sie es entfernen.

export function makeReactive (obj) {
  // eslint-disable-next-line no-proto
  const proto = obj.__proto__

  Object.defineProperty(obj, '__proto__', {
    get () { return proto },
    // eslint-disable-next-line no-proto
    set (newValue) { proto.__proto__ = newValue }
  })
}
import { makeReactive } from 'util'

export default class UserCollection extends Array {
  constructor (...args) {
    super(...args)

    makeReactive(this)
  }
}

@edcoreweb
Danke vielmals

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen