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

React电影搜索页无匹配结果时显示提示的实现方法

React电影搜索页无结果空白问题修复

问题现象

基于React开发的电影搜索页面基础功能运行正常,但输入不存在的电影名称发起搜索时,对应内容区域显示空白,该问题由原代码第8行的空数组兜底逻辑导致,需要在无匹配搜索结果时展示No results found提示。

原问题代码

import React from 'react'
import Card from './Card'

const CardList = ({ results }) => {

    let data = [];
    if(results.data) {
        data = results.data.Search || [];
    }


  return (
    <section className='container'>

    <div className='row justify-content-center'> 
        
            {data.map((item) => (
                <Card key={item.imdbID} movie={item}/>
            ))}
        
    </div>
    </section>

  )
}

export default CardList

问题根因

当搜索关键词无匹配结果时,接口返回的results.data.Search字段值为undefined,原代码直接将其兜底为空数组。对空数组执行map遍历不会生成任何可渲染的DOM节点,最终内容区域无任何展示,表现为空白。

修复方案

直接在渲染层增加数组长度判断即可,不需要改动原有数据获取逻辑:

  • 当结果数组长度为0时,渲染无结果提示文本
  • 当存在有效搜索结果时,保持原有遍历渲染Card组件的逻辑不变
  • 原有Card组件的key绑定、props传参逻辑完全保留,不影响正常搜索场景的使用

修复后的完整代码如下:

import React from 'react'
import Card from './Card'

const CardList = ({ results }) => {

    let data = [];
    if(results.data) {
        data = results.data.Search || [];
    }


  return (
    <section className='container'>
      <div className='row justify-content-center'> 
        {data.length === 0 ? (
          <p className="text-center mt-4">No results found</p>
        ) : (
          data.map((item) => (
            <Card key={item.imdbID} movie={item}/>
          ))
        )}
      </div>
    </section>
  )
}

export default CardList

无结果提示的样式类名、包裹标签可以根据项目自身的UI规范调整,保证和页面整体风格统一即可。

内容的提问来源于stack exchange,提问作者Jonathan Arriazu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:03:43