Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mencipta fungsi tersuai untuk Vue JS seperti cangkuk create()?

<p>Bagaimanakah saya harus membuat pemalam yang menambahkan fungsi bernama <code>struct</code> (seperti <code>created()</code> cangkuk) pada semua komponen? </p> <p>Selain itu, saya mahu pemalam saya mempunyai akses kepada <kod>struktur</kod> </p> <pre class="brush:js;toolbar:false;">eksport lalai { struktur() { // Akses kepada konteks } } </pra> <p>Saya perlu menyebut bahawa saya menggunakan Inertia JS. </p>
P粉512729862P粉512729862411 hari yang lalu405

membalas semua(1)saya akan balas

  • P粉848442185

    P粉8484421852023-09-05 00:31:53

    Anda boleh menggunakan Vue Mixins atau Composables.

    Kedua-duanya boleh memberi anda beberapa fungsi dan pembolehubah yang dikongsi. Tetapi saya tidak tahu bagaimana untuk menentukan cangkuk baharu dalam Vue seperti create() . Saya perlu memulakan fungsi anda dalam create() sendiri. Sudah tentu, anda boleh menggunakan mixin untuk mengatasi cangkuk Vue sedia ada.

    Mixin sangat mudah, tetapi tidak lagi disyorkan

    Tiada dicipta() dalam Composition API created() ,所以你必须使用onBeforeMount()onMounted(), jadi anda mesti menggunakan onBeforeMount() atau onMounted()

    Berikut adalah contoh yang sangat asas menggunakan kedua-dua teknik

    const { createApp, ref, onBeforeMount } = Vue;
    
    const myMixin = {
      created() {
        console.log('myMixin: created()')
      }
    }
    
    const myComposable = () => {
        onBeforeMount(() => {
           console.log('myComposable: onBeforeMount()')    
        })
        const myFunction = () => console.log('myFunction()')    
        return { myFunction }
    }
    
    const App = {
      setup() {
        const { myFunction } = myComposable()
        return  { myFunction }
      },
      mixins: [myMixin]
    }
    
    const app = createApp(App)
    app.mount('#app')
    <div id="app">
      <button @click="myFunction()">myFunction()</button>
    </div>
    <script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>

    balas
    0
  • Batalbalas