You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从函数构建PrimeReact菜单出现TypeScript错误,求解决方法

解决TypeScript错误:Type '() => MenuItem[]' is not assignable to type 'MenuItem[]'

错误核心原因:Menu组件的model属性要求接收MenuItem[]类型的值,但你传入的是一个返回MenuItem[]的函数,而非函数执行后生成的数组。以下是两种针对性的解决方式:

方法1:直接调用函数传递结果

如果菜单数据是静态(无需异步获取)的,直接在传入model时执行函数即可:

const model2 = ():MenuItem[] => {
     let items:MenuItem[] = [
        { label: 'New'},
        { label: 'Delete'}
     ];
     return items;
};

return <Menu model={model2()} />; // 调用函数获取数组,匹配属性类型要求

方法2:异步加载数据库数据(动态场景)

如果菜单数据需要从数据库异步获取,用React状态管理处理:

import { useState, useEffect } from 'react';

// 模拟从数据库获取菜单数据的异步函数
const fetchMenuFromDB = async (): Promise<MenuItem[]> => {
    // 替换为实际的数据库请求逻辑
    const res = await fetch('/your-db-api/menu-items');
    return res.json();
};

const YourComponent = () => {
    const [menuItems, setMenuItems] = useState<MenuItem[]>([]);

    useEffect(() => {
        const loadMenu = async () => {
            const items = await fetchMenuFromDB();
            setMenuItems(items);
        };
        loadMenu();
    }, []);

    return <Menu model={menuItems} />;
};

内容的提问来源于stack exchange,提问作者Chris Hunter-Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:15:05