cari

Rumah  >  Soal Jawab  >  teks badan

Vue 3 Skrip Tetapan Skrip |. Secara tersirat memasukkan parameter "el" dalam rujukan templat

Bolehkah sesiapa memberitahu saya mengapa skrip taip menjerit kepada saya dengan ralat berikut? error TS7006:参数“el”隐式具有“any”类型。 ref="(el) => saveRef(index, el)".我很确定 saveRef Jenis yang betul ditetapkan dalam fungsi.

<script lang="ts" setup>
    import FormComponent from '@/components/FormComponent.vue'

    const formRefs = ref<
      ComponentPublicInstance<typeof FormComponent>[]
    >([])

    function saveRef(
      index: number,
      el: ComponentPublicInstance<typeof FormComponent>
    ) {
      formRefs.value[index] = el
    }

    onBeforeUpdate(() => {
      formRefs.value = []
    })
  </script>

  <template>
    <div v-for="(component, index) in components" :key="index">
      <form-component
        :ref="(el) => saveRef(index, el)"
        :component="component"
        :index="index"
      />
   </div>
 </template>

P粉883278265P粉883278265278 hari yang lalu315

membalas semua(1)saya akan balas

  • P粉020556231

    P粉0205562312024-02-22 00:26:27

    Meninggalkan JS berlebihan dalam templat biasanya bukan amalan yang baik. Penyelesaian yang betul adalah untuk menentukan fungsi pengendalian rujukan yang ditaip dalam skrip komponen. Oleh kerana ia harus diparameterkan, ia boleh menjadi fungsi tertib lebih tinggi:

    function saveRef(
      index: number,
    ) {
      return (el: ComponentPublicInstance) => {
        formRefs.value[index] = el
      }
    }

    dan gunakannya sebagai :ref="saveRef(index)".

    balas
    0
  • Batalbalas