vue.js 如果我在我的Nuxt 3项目中定义了list,为什么它是未定义< script setup>的?

btxsgosb  于 7个月前  发布在  Vue.js
关注(0)|答案(1)|浏览(83)

我有一个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


最奇怪/最令人沮丧的部分是,当我昨天关闭它时,它工作了。今天它没有。我没有做任何介于两者之间的事情。我如何才能让它再次工作?为什么它不工作?不应该定义列表,因为它是在设置中定义的?

ql3eal8s

ql3eal8s1#

如Vue 3的文档所示,如果已经有选项API代码库**,建议在选项API中使用复合API,只使用setup()选项,如下所示**。(不是2个<script> s):

<script>
  export default {
    setup() {
      // composition API
    },

    // options API
  }
</script>

字符串
否则,您只能选择其中之一。
在您的例子中,为什么不在<script setup>中使用onMounted(() => {})

相关问题