Vue: Mendukung subkelas Array

Dibuat pada 27 Des 2018  ·  3Komentar  ·  Sumber: vuejs/vue

Versi: kapan

2.5.21

Tautan reproduksi

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

Langkah-langkah untuk mereproduksi

1- buat kelas yang memperluas Array dan tambahkan metode khusus
2- buat instance baru dari kelas dan tambahkan ke data
3- coba panggil metode pada instance di template

Apa yang diharapkan?

Metode ini berhasil dijalankan

Apa yang sebenarnya terjadi?

Kesalahan bukan fungsi

feature request

Komentar yang paling membantu

@AmrIKhudair
Saya membutuhkan ini juga dan membuatnya bekerja di user-land. Ketika Vue 3 tiba, Anda dapat menghapusnya.

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)
  }
}

Semua 3 komentar

Vue 2 saat ini tidak mendukung subclass Array (cabang pengembangan Vue 3 sudah mendukung). Saya akan mengubah ini menjadi permintaan fitur.

@AmrIKhudair
Saya membutuhkan ini juga dan membuatnya bekerja di user-land. Ketika Vue 3 tiba, Anda dapat menghapusnya.

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
Terima kasih banyak

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

robertleeplummerjr picture robertleeplummerjr  ·  3Komentar

paceband picture paceband  ·  3Komentar

Jokcy picture Jokcy  ·  3Komentar

lmnsg picture lmnsg  ·  3Komentar

aviggngyv picture aviggngyv  ·  3Komentar