使用useMemo处理组件传入的houses数组无渲染结果问题排查
问题分析与解决
你代码里的核心问题是:useMemo的回调函数没有返回map生成的元素数组,导致houseMemo的值为undefined,页面自然渲染不出任何内容。
修正后的代码如下:
export default function CompactView({ houses }) { const houseMemo = useMemo(() => { // 关键:return map的执行结果 return houses?.map((house) => { return ( <div key={house.id}> {/* 必须添加唯一key,React列表渲染要求 */} ... {/* 这里放房屋信息的渲染内容 */} </div> ); }); }, [houses]); return ( <> ... <div> {/* 可以加个空数组兜底提示 */} {houseMemo?.length === 0 ? <p>暂无房屋数据</p> : houseMemo} </div> </> ); }
额外注意事项:
- 列表渲染时必须给每个元素加唯一的
key属性,建议用数据里的唯一标识(比如house.id),不要用索引,避免数据顺序变化时引发的性能问题。 - 如果
houses是空数组,map会返回空数组,页面也不会有内容,上面的代码加了兜底提示,提升用户体验。
内容的提问来源于stack exchange,提问作者Captai-N
相关产品推荐
相关产品推荐

