OUCHWC666 2022-12-06 09:48
浏览 25
已结题

vue3 + ts 的Suspense异步加载问题

问题遇到的现象和发生背景

使用vue3的Suspense组件问题,是一个TodoList案例,使用Suspense组件进行v-for

用代码块功能插入代码,请勿粘贴截图

父组件template模板部分

  <div class="header">
    <input class="addInput" v-model="inputVal" @keyup.enter="addThing" />
  </div>
  <ul class="things">
    <Suspense :key="item.thingsId" v-for="item in thingList">
      <template #default>
        <Items
<!--          如果这里添加item,那么在异步加载的过程中在输入框输入就会报错,删除了就好了-->
          @click="changeItem(item)"
          :item1="item"
        ></Items>
      </template>
      <template v-slot:fallback>
        <div>。。。isLoading</div>
      </template>
    </Suspense>
  </ul>

父组件setup


import { reactive, ref, defineAsyncComponent } from 'vue';
// 异步引入组件
const Items = defineAsyncComponent(
  () => import('@/components/SingleItems.vue')
);
// 数据结构
interface thing {
  thingsId: number; //事件id
  thingsName: string; //事件名称
  isDo: boolean; // 是否已做
}
const thingList = reactive<Array<thing>>([]);
const inputVal = ref('');
// 添加数据 回车触发
function addThing() {
  if (inputVal.value === '') {
    alert('输入为空,添加失败');
    return;
  } else {
    thingList.push({
      thingsId: Date.now() + Math.floor(Math.random() * 100),
      thingsName: inputVal.value,
      isDo: false,
    });
    inputVal.value = '';
  }
}
// click事件
function changeItem(item: thing) {
  console.log(item);
}

子组件模板

  <div style="overflow: hidden">
    <input style="float: left" type="checkbox" :value="item1.isDo" />
    <span style="display: block; text-align: center; float: left">{{
      item1.thingsName
    }}</span>
    <button class="niceButton2">删除</button>
  </div>

子组件setup

import { defineProps, defineEmits, reactive, toRefs } from 'vue';

interface Props {
  item1: {
    thingsName: string;
    thingsId: number;
    isDo: boolean;
  };
}
const props = defineProps<Props>();

function fetchData() {
  return new Promise((resolve) => {
    setTimeout(() => {
      //模拟异步请求
      resolve([
        {
          name: '张三',
          age: 15,
        },
        {
          name: '李四',
          age: 17,
        },
      ]);
    }, 1000);
  });
}

await fetchData();

运行结果及报错内容

在等待子组件异步函数时,此时在父组件输入一些值,此时就报错了

img

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月14日
    • 创建了问题 12月6日

    悬赏问题

    • ¥15 数学建模数学建模少ai
    • ¥15 有没有cst丛书18算例21
    • ¥15 如何把LibreOffice添加到自定义层中
    • ¥35 这个的负序网络和零序网络怎么画?(答疑)
    • ¥200 基于同花顺supermind的量化策略脚本编辑
    • ¥20 Html备忘录页面制作
    • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
    • ¥20 数学建模来解决我这个问题
    • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
    • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题