Vue 3:在 defineProps 中设置语言环境默认值
Vue 3: Set locale default value in defineProps
我正在尝试使用 i18n
将 prop 的默认值设置为语言环境值。我正在使用 vue 3.2 和脚本设置标签。
我尝试了以下方法,但这给了我一个错误:
defineProps are referencing locally declared variables.
<script setup>
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
defineProps({
type: { type: String, required: true },
title: { type: String, required: false, default: `${t('oops', 1)} ${t('request_error', 1)}` },
description: { type: String, required: false, default: '' },
showReload: { type: Boolean, required: false, default: false },
error: { type: String, required: true },
});
</script>
处理此问题的最佳方法是什么?
defineProps
是编译器宏,因此您不能在其中使用任何运行时值。我建议为此默认值使用局部变量:
<script setup>
import { useI18n } from 'vue-i18n';
const props = defineProps({
type: { type: String, required: true },
title: { type: String, required: false},
description: { type: String, required: false, default: '' },
showReload: { type: Boolean, required: false, default: false },
error: { type: String, required: true },
});
const { t } = useI18n();
const titleWithDefault = props.title || `${t('oops', 1)} ${t('request_error', 1)}`;
</script>
在最后一个要点中也有描述:https://v3.vuejs.org/api/sfc-script-setup.html#defineprops-and-defineemits
我正在尝试使用 i18n
将 prop 的默认值设置为语言环境值。我正在使用 vue 3.2 和脚本设置标签。
我尝试了以下方法,但这给了我一个错误:
defineProps are referencing locally declared variables.
<script setup>
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
defineProps({
type: { type: String, required: true },
title: { type: String, required: false, default: `${t('oops', 1)} ${t('request_error', 1)}` },
description: { type: String, required: false, default: '' },
showReload: { type: Boolean, required: false, default: false },
error: { type: String, required: true },
});
</script>
处理此问题的最佳方法是什么?
defineProps
是编译器宏,因此您不能在其中使用任何运行时值。我建议为此默认值使用局部变量:
<script setup>
import { useI18n } from 'vue-i18n';
const props = defineProps({
type: { type: String, required: true },
title: { type: String, required: false},
description: { type: String, required: false, default: '' },
showReload: { type: Boolean, required: false, default: false },
error: { type: String, required: true },
});
const { t } = useI18n();
const titleWithDefault = props.title || `${t('oops', 1)} ${t('request_error', 1)}`;
</script>
在最后一个要点中也有描述:https://v3.vuejs.org/api/sfc-script-setup.html#defineprops-and-defineemits