Jadual Kandungan
Operasi asas
Soalan
Rumah hujung hadapan web View.js Mengapakah Reflect mesti digunakan untuk Proksi dalam vue3?

Mengapakah Reflect mesti digunakan untuk Proksi dalam vue3?

Jun 01, 2023 pm 06:55 PM
vue3 proxy reflect

Mereka yang telah menggunakan Vue tahu bahawa pelaksanaan respons Vue menggunakan Proksi, dan ia digunakan dengan Reflect Perkara yang paling ketara apabila melihat dokumen Proxy dan Reflect ialah kaedah statik objek Reflect mempunyai nama yang sama dengan nama yang sama. Kaedah proksi proksi, dan Reflect boleh mengendalikannya menggunakan objek, proksi boleh memproksi objek, tetapi saya tidak tahu mengapa kadang-kadang anda mesti menggunakan Reflect dalam kaedah proksi Proksi

Operasi asas

Kaedah statik objek Reflect mempunyai nama yang sama dengan kaedah proksi Proksi Terdapat 13 jenis Contoh get dan set adalah seperti berikut

const tempObj = { a: 1 };
Reflect.get(tempObj, 'a'); // 返回 1
Reflect.set(tempObj, 'a', 2); // 返回true 表示设置成功, a的值变2

const tempObj1 = { a: 1 };
const handler = {
  get: function (obj, prop, receiver) {
    return prop === 'a' ? 1000 : obj[prop];
  },
  set: function (obj, prop, value, receiver) {
    console.log(prop);
    obj[prop] = prop === 'a' ? 6 : value;
    return true;
  },
};
const proxyObj = new Proxy(tempObj1, handler);
proxyObj.a; // proxyObj => {a: 1000}
proxyObj.a = 2; // proxyObj => {a: 6}
Salin selepas log masuk

Soalan

Jika Proksi tidak melakukan yang lain. operasi dan kembali secara langsung secara normal

const tempObj1 = { a: 1 };
const handler = {
  get: function (obj, prop, receiver) {
    return obj[prop];
  },
  set: function (obj, prop, value, receiver) {
    obj[prop] = value
    return true;
  },
};
const proxyObj = new Proxy(tempObj1, handler);
proxyObj.a; // proxyObj => {a: 1}
proxyObj.a = 2; // proxyObj => {a: 2}
Salin selepas log masuk

Dalam situasi di atas, Proksi boleh diselesaikan tanpa Menggunakan Reflect untuk mengendalikan pemintasan adalah lebih mudah daripada menggunakan Reflect

Objek yang berbeza, objek dengan get

const tempObj1 = {
  a: 1,
  get value() {
    console.log(this === proxyObj); // false
    return this.a;
  },
};
const handler = {
  get: function (obj, prop, receiver) {
    return obj[prop];
  },
  set: function (obj, prop, value, receiver) {
    obj[prop] = value;
    return true;
  },
};
const proxyObj = new Proxy(tempObj1, handler);
proxyObj.value; // 1
Salin selepas log masuk

Nilai yang dicetak dalam nilai di atas adalah palsu, Hasil yang dijangkakan harus benar, tetapi nilai objek asal yang digunakan dalam proksi harus diambil, jadi ini menunjuk ke objek asal , jadi nilainya palsu

Walaupun ini menunjukkan nilai yang salah, nilai yang diperolehi masih betul Ini Tiada sebab tertentu

const parent = {
  a: 1,
  get value() {
    console.log(this === child); // false
    return this.a;
  },
};
const handler = {
  get: function (obj, prop, receiver) {
    return obj[prop];
  },
  set: function (obj, prop, value, receiver) {
    obj[prop] = value;
    return true;
  },
};

const proxyObj = new Proxy(parent, handler);
const child = Object.setPrototypeOf({ a: 2 }, proxyObj);
child.value; // 1
Salin selepas log masuk

Ada masalah. . Hasil keluaran adalah berbeza daripada apa yang dijangkakan Ini sepatutnya menunjuk kepada anak, tetapi ia menunjukkan kepada ibu bapa

Refleksi

Jika Reflect.get(obj, prop) digantikan dengan obj[prop] , maksudnya tak ada perubahan makna dan hasil adalah sama kan ada parameter penerima lain yang tidak berguna? kursus konsisten dengan jangkaan.

r tidak merujuk kepada objek proksi, mahupun objek asal, tetapi konteks pelaksanaan (ada pepatah bahawa tanpa mengubah ini dengan cara tertentu, Sesiapa yang memanggil menunjuk kepada siapa, ini adalah apa yang dijangkakan), di sini
memanggil

, jadi titik yang dijangkakan seharusnya this, di sini anda mungkin berfikir bahawa penggunaan terus receive tidak akan berfungsi, ini akan menyebabkan limpahan pelaksanaan, child Bersamaan dengan value , child belum dilaksanakan lagi, jika receiver[prop] dilaksanakan semula, ia akan terus dilaksanakan selama-lamanya Parameter receiver[prop] dalam child.valuechild.value telah diubah suai receiver[prop] tanpa menambah

, dan selepas menambahkannya menunjuk ke

Reflect.get(target, key, receiver)receiver Pastikan anda menggunakan this apabila this digunakan dalam objek proksi , dengan cara ini, kita boleh sentiasa mendapat nilai yang dijangkakantargetreceiver

Ringkasan
Objek proksi dalam vue3 mendapat nilai yang dijangkakan, dan ia dikumpulkan dan dikemas kini dalam pemintasan, jadi pastikan anda menggunakan

dalam fungsi pemintasan this untuk mengendalikan Reflect

Bagaimana anda sentiasa mendapat nilai yang dijangkakan seolah-olah tiada proksi

Atas ialah kandungan terperinci Mengapakah Reflect mesti digunakan untuk Proksi dalam vue3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Analisis konfigurasi dan pengoptimuman Pengurus Proksi Nginx Analisis konfigurasi dan pengoptimuman Pengurus Proksi Nginx Sep 26, 2023 am 09:24 AM

Gambaran keseluruhan analisis dan pengoptimuman konfigurasi NginxProxyManager: NginxProxyManager ialah alat pengurusan proksi terbalik berdasarkan Nginx, yang boleh membantu kami mengkonfigurasi dan mengurus pelayan proksi terbalik dengan mudah. Dalam proses menggunakan NginxProxyManager, kami boleh meningkatkan prestasi dan keselamatan pelayan dengan menghuraikan dan mengoptimumkan konfigurasinya. Analisis konfigurasi: Lokasi dan struktur fail konfigurasi: NginxProxyManag

vue3+vite: Bagaimana untuk menyelesaikan ralat apabila menggunakan memerlukan untuk mengimport imej secara dinamik dalam src vue3+vite: Bagaimana untuk menyelesaikan ralat apabila menggunakan memerlukan untuk mengimport imej secara dinamik dalam src May 21, 2023 pm 03:16 PM

Penggunaan vue3+vite:src memerlukan pengimportan imej secara dinamik dan laporan ralat dan penyelesaian vue3+vite secara dinamik Jika vue3 dibangunkan menggunakan skrip taip, akan terdapat mesej ralat untuk keperluan untuk memperkenalkan imej tidak boleh digunakan :require(' .../assets/test.png') diimport kerana typescript tidak menyokong require, jadi import digunakan Berikut ialah cara menyelesaikannya: gunakan awaitimport

Cara memuat semula sebahagian kandungan halaman dalam Vue3 Cara memuat semula sebahagian kandungan halaman dalam Vue3 May 26, 2023 pm 05:31 PM

Untuk mencapai muat semula separa halaman, kami hanya perlu melaksanakan pemaparan semula komponen setempat (dom). Dalam Vue, cara paling mudah untuk mencapai kesan ini ialah menggunakan arahan v-if. Dalam Vue2, selain menggunakan arahan v-if untuk memaparkan semula dom setempat, kami juga boleh mencipta komponen kosong baharu Apabila kami perlu memuat semula halaman setempat, lompat ke halaman komponen kosong ini dan kemudian masuk semula pengawal beforeRouteEnter dalam komponen kosong. Seperti yang ditunjukkan dalam rajah di bawah, cara mengklik butang muat semula dalam Vue3.X untuk memuatkan semula DOM dalam kotak merah dan memaparkan status pemuatan yang sepadan. Memandangkan pengawal dalam komponen dalam sintaks persediaan skrip dalam Vue3.X hanya mempunyai o

Ketahui fungsi reflect.MakeFunc dalam dokumentasi bahasa Go untuk melaksanakan penjanaan fungsi dinamik Ketahui fungsi reflect.MakeFunc dalam dokumentasi bahasa Go untuk melaksanakan penjanaan fungsi dinamik Nov 03, 2023 pm 07:04 PM

Ketahui fungsi reflect.MakeFunc dalam dokumentasi bahasa Go untuk melaksanakan penjanaan fungsi dinamik Dalam bahasa Go, pakej reflect menyediakan satu siri fungsi dan jenis untuk menghurai dan maklumat jenis operasi pada masa jalan. Antaranya, fungsi reflect.MakeFunc ialah fungsi yang sangat berkuasa yang boleh digunakan untuk menjana fungsi secara dinamik semasa runtime. Fungsi reflect.MakeFunc ditakrifkan seperti berikut: funcMakeFunc(typType,fn

Cara Vue3 menghuraikan penurunan harga dan melaksanakan penyerlahan kod Cara Vue3 menghuraikan penurunan harga dan melaksanakan penyerlahan kod May 20, 2023 pm 04:16 PM

Vue melaksanakan bahagian hadapan blog dan perlu melaksanakan penghuraian markdown Jika terdapat kod, ia perlu melaksanakan penyerlahan kod. Terdapat banyak pustaka parsing markdown untuk Vue, seperti markdown-it, vue-markdown-loader, marked, vue-markdown, dsb. Perpustakaan ini semuanya sangat serupa. Ditanda digunakan di sini, dan highlight.js digunakan sebagai pustaka penonjolan kod. Langkah-langkah pelaksanaan khusus adalah seperti berikut: 1. Pasang perpustakaan bergantung Buka tetingkap arahan di bawah projek vue dan masukkan arahan berikut npminstallmarked-save//marked untuk menukar markdown ke htmlnpmins.

Strategi penggunaan kontena dan perkhidmatan mikro di bawah Pengurus Proksi Nginx Strategi penggunaan kontena dan perkhidmatan mikro di bawah Pengurus Proksi Nginx Sep 27, 2023 pm 01:06 PM

Strategi penggunaan kontena dan perkhidmatan mikro di bawah NginxProxyManager memerlukan contoh kod khusus: Dengan populariti seni bina perkhidmatan mikro, teknologi kontena telah menjadi bahagian penting dalam pembangunan perisian moden. Dalam seni bina perkhidmatan mikro, NginxProxyManager memainkan peranan yang sangat penting, digunakan untuk mengurus dan memproksi trafik perkhidmatan mikro. Artikel ini akan memperkenalkan cara menggunakan NginxProxyManager untuk menggunakan dan mengurus perkhidmatan mikro kontena, dan menyediakan contoh kod yang berkaitan.

Bagaimana untuk memilih avatar dan memangkasnya dalam Vue3 Bagaimana untuk memilih avatar dan memangkasnya dalam Vue3 May 29, 2023 am 10:22 AM

Kesan terakhir ialah memasang komponen VueCropper yarnaddvue-cropper@next Nilai pemasangan di atas adalah untuk Vue3 Jika ia adalah Vue2 atau anda ingin menggunakan kaedah lain untuk merujuk, sila lawati alamat npm rasminya. Ia juga sangat mudah untuk merujuk dan menggunakannya dalam komponen Anda hanya perlu memperkenalkan komponen yang sepadan dan fail gayanya. Saya tidak merujuknya secara global di sini, tetapi hanya memperkenalkan import{userInfoByRequest}from'../js/api. ' dalam fail komponen saya import{VueCropper}dari'vue-cropper&

Tutorial Pengurus Proksi Nginx: Panduan Permulaan Pantas Tutorial Pengurus Proksi Nginx: Panduan Permulaan Pantas Sep 27, 2023 pm 05:39 PM

Tutorial NginxProxyManager: Panduan Mula Pantas, Contoh Kod Khusus Diperlukan Pengenalan: Dengan perkembangan teknologi rangkaian, pelayan proksi telah menjadi sebahagian daripada penggunaan Internet harian kami. NginxProxyManager ialah platform pengurusan pelayan proksi berdasarkan Nginx, yang boleh membantu kami mewujudkan dan mengurus pelayan proksi dengan cepat. Artikel ini akan memperkenalkan anda kepada panduan permulaan pantas NginxProxyManager, serta beberapa contoh kod khusus. satu

See all articles