从函数构建PrimeReact菜单出现TypeScript错误,求解决方法
错误核心原因: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
相关产品推荐
相关产品推荐

