next.js 当通过函数分配变量值时:typescript错误:变量在被分配之前被使用[2454]

zed5wv10  于 11个月前  发布在  TypeScript
关注(0)|答案(1)|浏览(136)

所以我用nextJS建了一个商店
我有两个变量,它们被一个函数从数据库中赋值

let size: Size

    let ribbonTable: Ribbon
    
    async function findSizeCategory(): Promise<void> {
    const category = product?.category ;
    switch(category) {
        case "mens":
        size = await db.select().from(mens_size);
        break;
        case "womans":
        size = await db.select().from(womans_size);
        ribbonTable = await db.select().from(ribbon)
        break;
        case "kids":
        size = await db.select().from(kids_size);
        ribbonTable = await db.select().from(ribbon)
        break;
    }
    }
    await findSizeCategory()

字符串
但是当我在map函数中使用它们时,如果ribbonTable的值大于0,

<label className="block">
            what size are you?
            <select>
            {size.map(s =>
                <option key={s.size_id} value={`${s.size_id}`}>{s.size}</option>
            )}
            </select>
        </label>

                {ribbonTable && ribbonTable.length > 0 && (
                    <label className="block ">
                        Select a ribbon:
                        <select>
                            {ribbonTable.map(r =>
                                <option key={r.ribbon_id} value={r.ribbon_id}>{r.ribbon}</option>
                            )}
                        </select>
                    </label>
                )}

shstlldc

shstlldc1#

我们不能看到你的整个代码,所以可能有点难以分辨,但从我所看到的,你只需要给变量赋值初始值。你的findSizeCategory()函数是async,因此这两个变量可能会在视图渲染后初始化。
因此,有效地,在模板中,您正在使用这些变量之前,他们有机会被初始化,这可能会导致错误。
为了解决这个问题,请尝试设置默认值:

let size: Size = ...; // assign a default value matching the `Size` type
let ribbonTable: Ribbon = ...; // assign a default value matching the `Ribbon` type

字符串

相关问题