我有一个Nuxt 3项目,我创建了一个组件,它生成一个可变数量的元素,为此,元素在调用时会得到一个数组。在脚本设置中,我将这个数组定义为列表,我想在挂载函数中使用它来将某些数据点Map到我的数据上。
下面是使用的组件,其中数组被传递给元素,每个变量(x.data.attr..)都是一个String。
<Menu
:items="[
{
bildURL: x.data.attributes.BildKasten1.data.attributes.url,
Text: x.data.attributes.TextKasten1,
KartenTitel: x.data.attributes.KartenTitel1,
},
{
bildURL: x.data.attributes.BildKasten2.data.attributes.url,
Text: x.data.attributes.TextKasten2,
KartenTitel: x.data.attributes.KartenTitel2,
},
]"
/>
字符串
我的设置:
<script lang="ts" setup>
import { faThList } from '@fortawesome/free-solid-svg-icons';
const props = defineProps({
items: {
Array,
},
});
const list = ref(
props.items.map((item) => {
return { ...item, open: false };
}),
);
</script>
型
我的正常脚本标记(删除了方法,因为它们与此无关):
<script lang="ts">
export default {
data() {
return {
obj: {},
};
},
mounted() {
console.log(list);
for (i in list) {
this.obj[i.KartenTitel] = idx > 0 ? false : true;
}
},
};
</script>
型
现在它不工作,控制台记录:
Uncaught (in promise) ReferenceError: list is not defined
型
最奇怪/最令人沮丧的部分是,当我昨天关闭它时,它工作了。今天它没有。我没有做任何介于两者之间的事情。我如何才能让它再次工作?为什么它不工作?不应该定义列表,因为它是在设置中定义的?
1条答案
按热度按时间ql3eal8s1#
如Vue 3的文档所示,如果已经有选项API代码库**,建议在选项API中使用复合API,只使用
setup()
选项,如下所示**。(不是2个<script>
s):字符串
否则,您只能选择其中之一。
在您的例子中,为什么不在
<script setup>
中使用onMounted(() => {})