在mounted方法中,Nuxt 3的props值第一次沒有接收到。
P粉418351692
P粉418351692 2023-07-19 17:47:03
0
1
658

我正在研究Nuxt 3,並且在props方面遇到了問題。我透過props將一個物件從父元件傳遞給子元件,但是當我在控制台列印這些props時,物件似乎是空的,但是如果我將相同的控制台放在mounted方法內的setTimeout函數下面,那麼它就能正常運作。請查看下面的程式碼以獲取更多想法。

Parent component

<template>
  <ChildComponent
    :form-data="formData.childData"
  />
<script setup>
const formData = reactive({
 ...
 ...
});

onMounted(() => {
  const { data, error } = await useFetch("my-api-url");
  if (data.value) {
    formData = data.value;
  }
});
</script>
</template>

子元件

<template>
  {{ }}
<script setup>
const props = defineProps({
  formData: {
    type: Object,
    required: true,
    default: "",
  },
});

onMounted(() => {
  console.log(props.formData); // **Receiving blank object**

  setTimeout(() => {
      console.log(props.formData); // **Receiving perfectly **
  }, 1000) 
});
</script>
</template>

我嘗試在onMounted上使用非同步函數onMounted( async () => { ... }),但沒有起作用。

如果沒有使用setTimeout函數,是否有任何標準選項可以在onMounted上使用props,請幫我解決這個問題。

P粉418351692
P粉418351692

全部回覆(1)
P粉041856955

在父元件中呼叫await useFetch("my-api-url")之前,子元件已經掛載,因此在useFetch()取得資料時,您將得到一個空物件作為props。

如果您想在props發生變化時進行監聽,可以使用watch:

watch(() => props.formData, (old, new) => {
    console.log(new);
}); 
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板