【发布时间】:2022-01-21 00:15:45
【问题描述】:
我正在使用 Redux 创建一个 React 应用程序。通过 Axios 获取数据,她正在工作。图片是使用效果
然后我将数据导入到我的一个组件中,她正在工作。
然后我尝试取值,调整它,然后返回一个新值 当我运行程序时它可以工作,但是当我刷新页面时,会发生错误
我的组件代码
import React,{useState,useEffect} from 'react'
import {useSelector} from "react-redux"
import{Products,Filters,Cards} from "./Styled"
export function Prodacts() {
const [toggleFilter,setToggleFilter]=useState(false)
const [filteredData,setFilterdData]=useState([])
const[limitList,setLimetList]=useState(9)
const ProductsData = useSelector(state=>state.productData)
const handelFilter=(e)=>{
const filter=e;
if(filter==="women"){
return setFilterdData( ProductsData.filter((e)=>filter===e.category))
}
else if(filter==="men"){
return setFilterdData(ProductsData.filter((e)=>e.category===filter))
}
else if(filter==="accessories"){
return setFilterdData( ProductsData.filter((e)=>e.category===filter))
}
else return setFilterdData(ProductsData)
}
const displayProduct=()=>(
<Cards>
{
filteredData.map((e)=>(
<div>
<div>
<img src={e.img} alt="img"/>
<button>Quick View</button>
</div>
<div>
<h4>{e.name}</h4>
<span>{e.price}</span>
</div>
</div>
)
)
}
</Cards>
)
const updateData=()=>{
const data=[]
for(let i=0;i<limitList;i++){
data.push(ProductsData[i])
}
setFilterdData(data)
}
useEffect(()=>{
updateData()
},[filteredData])
const Filter=()=>(
<Filters>
<div>
<span onClick={()=>handelFilter("All Products")}>All Products</span>
<span onClick={()=>handelFilter("women")}>women</span>
<span onClick={()=>handelFilter("men")}>Men</span>
<span onClick={()=>handelFilter("accessories")}>Accessories</span>
</div>
<div>
<button className={toggleFilter?'fas fa-times':'fas fa-filter'}>Filtter</button>
<button className={!toggleFilter?'fas fa-search':' fas fa-times '}>Filtter</button>
</div>
</Filters>
)
return (
<Products className="container">
<h2>PRODUCT OVERVIEW</h2>
{ Filter()}
{displayProduct()}
</Products>
)
}
【问题讨论】:
-
问题中的代码没有向您展示如何填充
filteredData,这似乎是包含具有值undefined的元素的数组。请出示该代码。 -
图像可能是有用的添加,但您需要将所有代码显示为文本,而不是显示为文字图片。原因:meta.stackoverflow.com/q/285551/157247您图片中的某些代码在问题中没有作为文本显示。
-
我通过一个名为“updateData”的函数填写状态(filteredData)中的数据。看代码,不看图片,我通过useEffect运行
-
抱歉,不知道我是怎么错过
updateData的(可能是setFilterdData中缺少的e)。 -
这个功能没有问题,问题是我刷新页面时utilusefact不起作用。代码方法我还是不确定,正在寻找解决方案
标签: javascript reactjs react-hooks use-effect