最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

問題

使用 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> 來導出這些選項。

分析

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> 來導出這些選項:

方式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)用的方式,就會報錯。

解決

所以,使用外部導入的方式來使用 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>

總結

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

相關文章

  • vue項目引入遠程jweixin-1.2.0.js文件并使用詳解

    vue項目引入遠程jweixin-1.2.0.js文件并使用詳解

    這篇文章主要介紹了vue項目引入遠程jweixin-1.2.0.js文件并使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 詳解nginx配置vue h5 history去除#號

    詳解nginx配置vue h5 history去除#號

    這篇文章主要介紹了詳解nginx配置vue h5 history去除#號,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • vue2+elementUI實現(xiàn)下拉樹形多選框效果實例

    vue2+elementUI實現(xiàn)下拉樹形多選框效果實例

    這篇文章主要給大家介紹了關于vue2+elementUI實現(xiàn)下拉樹形多選框效果的相關資料,這是最近的工作中遇到的一個需求,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • 在vue中使用iframe解決視頻資源的防盜鏈

    在vue中使用iframe解決視頻資源的防盜鏈

    我們的vue2.0項目當中,存儲了許多圖片和視頻資源,所以我們需要增加防盜鏈設置,但是這樣一來,當我們將其他網(wǎng)站上的視頻資源,想入到我們的環(huán)境當中的時候,會報錯,所以本文給大家介紹了在vue中使用iframe解決視頻資源的防盜鏈,需要的朋友可以參考下
    2023-12-12
  • Nginx部署前端Vue項目的步驟、常見問題與解決方案

    Nginx部署前端Vue項目的步驟、常見問題與解決方案

    在現(xiàn)代Web開發(fā)中,Vue.js成為前端開發(fā)者構建單頁應用的熱門框架,Nginx以其高性能和穩(wěn)定性,成為部署Vue項目的理想選擇,這篇文章主要介紹了Nginx部署前端Vue項目的步驟、常見問題與解決方案,需要的朋友可以參考下
    2024-09-09
  • Vue 3 動態(tài) ref 的使用方式以表格為列

    Vue 3 動態(tài) ref 的使用方式以表格為列

    我正在開發(fā)的項目中,有一個表格組件,其中一列是分鏡描述,需要支持視頻上傳功能,下面給大家介紹Vue 3動態(tài)ref的使用方式以表格為列給大家詳細講解,感興趣的朋友一起看看吧
    2023-07-07
  • Vue Getters和mapGetters的原理及使用示例詳解

    Vue Getters和mapGetters的原理及使用示例詳解

    Vuex的核心概念包括state、mutations、actions、getters和modules,今天,我們要深入探討其中一個關鍵部分:getters,以及它的相關輔助函數(shù)mapGetters,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • vue-router鉤子函數(shù)實現(xiàn)路由守衛(wèi)

    vue-router鉤子函數(shù)實現(xiàn)路由守衛(wèi)

    這篇文章主要介紹了vue-router鉤子函數(shù)實現(xiàn)路由守衛(wèi),對vue感興趣的同學,可以參考下
    2021-04-04
  • vue實現(xiàn)div可拖動位置也可改變盒子大小的原理

    vue實現(xiàn)div可拖動位置也可改變盒子大小的原理

    這篇文章主要介紹了vue實現(xiàn)div可拖動位置也可改變盒子大小,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • vue3.0+ts引入詳細步驟以及語法校驗報錯問題解決辦法

    vue3.0+ts引入詳細步驟以及語法校驗報錯問題解決辦法

    Vue?3.0是一個非常流行的JavaScript框架,不僅易于學習和使用,而且可以與許多UI框架集成,下面這篇文章主要給大家介紹了關于vue3.0+ts引入詳細步驟以及語法校驗報錯問題的解決辦法,需要的朋友可以參考下
    2024-01-01

最新評論

江城| 中西区| 奈曼旗| 虎林市| 汤原县| 榕江县| 洛宁县| 兴和县| 崇左市| 呼玛县| 林周县| 云林县| 宁城县| 翁牛特旗| 黎平县| 精河县| 宜丰县| 罗田县| 扎囊县| 甘德县| 雅安市| 米林县| 仁寿县| 青州市| 阳泉市| 澄城县| 苍山县| 孟津县| 东宁县| 佳木斯市| 南宫市| 越西县| 五指山市| 花莲市| 西林县| 禹城市| 迭部县| 剑河县| 彰武县| 大埔县| 黎平县|