欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue3 defineProps設(shè)置默認值報錯問題及解決過程

 更新時間:2025年08月04日 09:14:05   作者:下雪天的夏風  
這篇文章主要介紹了Vue3 defineProps設(shè)置默認值報錯問題及解決過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

問題

使用 defineProps 指定默認值時報錯,代碼如下:

<template>
	<input type="text" :placeholder="props.placeholder" />
</template>

<script setup lang="ts">
import { useI18n } from "vue-i18n";

const { t } = useI18n();

interface Props {
	placeholder: string;
}
const props = withDefaults(defineProps<Props>(), {
	placeholder: t("home.title"),
});
</script>

報錯信息:

翻譯:

  • <script setup> 中的 defineProps() 不能引用本地聲明的變量,因為它將被提升到 setup() 函數(shù)外。
  • 如果你的組件選項需要在 module scope(模塊作用域)中初始化,可使用單獨的 <script> 來導(dǎo)出這些選項。

分析

SFC 有2個 scopemodule scopesetup scope。

按照報錯信息分析:因為在 setup scope 中定義的本地變量會被提升到 module scope。所以 defineProps() 不能引用本地聲明的變量。

官方文檔 中也有說明,

測試1

<template>
	<input type="text" :placeholder="props.placeholder" />
</template>

<script setup lang="ts">
interface Props {
	placeholder: string;
}
const a = "1234";
const props = withDefaults(defineProps<Props>(), {
	placeholder: a,
});
</script>

這樣定義的本地變量,渲染并沒有問題!

測試2,修改代碼如下,渲染報錯!

const a = () => "1234";
const props = withDefaults(defineProps<Props>(), {
	placeholder: a(),
});

按報錯提示信息測試

所以按照報錯提示信息,可使用單獨的 <script> 來導(dǎo)出這些選項:

方式1:√

<script lang="ts">
const a = () => "1234";
</script>

<script setup lang="ts">
interface Props {
	placeholder: string;
}

const props = withDefaults(defineProps<Props>(), {
	placeholder: a(),
});
</script>

方式2:√

export const a = () => "1234";
<script setup lang="ts">
import { a } from "./index";
interface Props {
	placeholder: string;
}

const props = withDefaults(defineProps<Props>(), {
	placeholder: a(),
});
</script>

測試 vue-i18n

<script lang="ts">
import { useI18n } from "vue-i18n";
const { t } = useI18n();
</script>

<script setup lang="ts">
interface Props {
	placeholder: string;
}
const props = withDefaults(defineProps<Props>(), {
	placeholder: t("home.title"),
});
</script>

發(fā)現(xiàn) const { t } = useI18n(); 只能在 setup 中使用:

但如果在 setup 中使用函數(shù)調(diào)用的方式,就會報錯。

解決

所以,使用外部導(dǎo)入的方式來使用 vue-i18n

<template>
	<input type="text" :placeholder="props.placeholder" />
</template>

<script setup lang="ts">
import i18n from "@/i18n";

interface Props {
	placeholder: string;
}
const props = withDefaults(defineProps<Props>(), {
	placeholder: i18n.global.t("home.title"),
});
</script>

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue 數(shù)據(jù)綁定的原理分析

    Vue 數(shù)據(jù)綁定的原理分析

    這篇文章主要介紹了Vue 數(shù)據(jù)綁定的原理,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-11-11
  • VUE+elementui組件在table-cell單元格中繪制微型echarts圖

    VUE+elementui組件在table-cell單元格中繪制微型echarts圖

    這篇文章主要介紹了VUE+elementui組件在table-cell單元格中繪制微型echarts圖,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-04-04
  • 基于vue和react的spa進行按需加載的實現(xiàn)方法

    基于vue和react的spa進行按需加載的實現(xiàn)方法

    這篇文章主要介紹了基于vue和react的spa進行按需加載,需要的朋友可以參考下
    2018-09-09
  • 前端框架學(xué)習總結(jié)之Angular、React與Vue的比較詳解

    前端框架學(xué)習總結(jié)之Angular、React與Vue的比較詳解

    這篇文章主要跟大家分享了關(guān)于前端框架中Angular.js、React.js與Vue.js的全方位比較,文章介紹的非常詳細,對大家進行區(qū)分對比這三者之間的差異區(qū)別很有幫助,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • vue實現(xiàn)原理this.$message實例詳解

    vue實現(xiàn)原理this.$message實例詳解

    這篇文章主要介紹了vue實現(xiàn)原理this.$message實例詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • vue多個元素的樣式選擇器問題

    vue多個元素的樣式選擇器問題

    這篇文章主要介紹了vue多個元素的樣式選擇器問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • vue2手機APP項目添加開屏廣告或者閃屏廣告

    vue2手機APP項目添加開屏廣告或者閃屏廣告

    這篇文章主要為大家詳細介紹了vue2手機APP項目添加開屏廣告或者閃屏廣告的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • vue版數(shù)字翻牌器的封裝

    vue版數(shù)字翻牌器的封裝

    這篇文章主要為大家詳細介紹了vue版數(shù)字翻牌器的封裝,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 詳解Vue中Axios封裝API接口的思路及方法

    詳解Vue中Axios封裝API接口的思路及方法

    這篇文章主要介紹了詳解Vue中Axios封裝API接口的思路及方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-10-10
  • vue?cli?局部混入mixin和全局混入mixin的過程

    vue?cli?局部混入mixin和全局混入mixin的過程

    這篇文章主要介紹了vue?cli?局部混入mixin和全局混入mixin的過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論