我的网站快完成了,我的查询有问题.我已经可以搜索到产品的名称了.

但如果找不到搜索的名称,我想呈现所有产品.

import { Box } from '@mui/material'
import React from 'react'
import { useState } from 'react'
import { useEffect } from 'react'
import { publicRequest } from '../requestMethod'
import CardProduct from './CardProduct/CardProduct'

const ProductListAfterSearch = ({query}) => {
  const [selectedProduct, setSelectedProduct] = useState([])

  console.log(query)

  useEffect(() => {
    const getProducts =  async () => {
      const res = await publicRequest.get(query ? `/products/search?searchQuery=${query}` : 'http://localhost:5000/api/products/')
      setSelectedProduct(res.data)
    }
    getProducts()
  }, [query])



  return (
    !selectedProduct.length? 'Product do not exist......': 
    <Box sx={{display: 'flex', flexWrap: 'wrap', gap: {xs: '0px', md: '10px'}, justifyContent: 'center'}}>
      {selectedProduct.map((product) => (
        <CardProduct query={query} key={product._id}  product={product}/>
      ))}
    </Box>
  )
}

export default ProductListAfterSearch

ParentChild/SearchProduct.js

const SearchedProducts = () => {

  const location = useLocation()
  const query = location.pathname.split('/')[2]

  
  return (
    <Box>
        <Navbar />
        <Sidebar  />
        <ProductListAfterSearch query={query}  />
        
    </Box>
  )
}

This is what it looks like when searched not found

推荐答案

不如这样试试吧:

useEffect(() => {
    const getProducts =  async () => {
    let res = await publicRequest.get(query ? `/products/search?searchQuery=${query}` : 'http://localhost:5000/api/products/')
    if(res.data.length === 0) {
       res= await publicRequest.get('http://localhost:5000/api/products/');
    }
  setSelectedProduct(res.data)
  }
  getProducts()
}, [query])

使用查询进行搜索,如果返回0个结果,则再次搜索所有产品.

尽管理想情况下您应该在后端处理它.就像我在这里判断的那样,如果有0个结果,您可以在您的服务中这样做,如果是0,只需返回All.这将省go 您第二次go 服务器的麻烦,而且效率会更高

Reactjs相关问答推荐

react 导致不必要的回归

Shadck/ui Select -当用户 Select 项目时更改状态

将cy.get()与动态类名一起使用?

梅X折线图无响应

在REACT-RUTER-DOMV6中使用通用页面包装组件有问题吗?

当项目开始时,它不会从三元运算符(REACT)加载一些tailwind 类名称

状态更改时的rtk查询触发器

如何在React组件中自动更新图表数据?

Chakra UI:如何在选中状态下设置复选框 colored颜色

获取更多数据后更新 DOM,而不刷新 React.js 中的页面

在Vite React上获取Amplify的环境变量

在 reactJS 中导航时页面重新加载

如何在 Next Js 13 App Router 中添加 Favicon 图标?

Primereact 的日历组件在每个月 12 日之后使用非唯一键生成

表单错误后 Ionic React 无法 Select 单选按钮

React Native Realm 应用程序在发布构建后崩溃

React 中的 Slide API Mui 在开始而不是结束时触发侦听器

Lodash 在命名导入中导入整个包

在状态中存储多个选定的选项

由于另一个子组件,如何在react 中渲染另一个子组件