【发布时间】:2021-08-26 22:36:34
【问题描述】:
我正在尝试为我正在开发的网站制作过滤器功能,我正在使用 html 范围滑块。问题是值会在它们下降时更新,例如,如果我将滑块设置为 500 美元,则只会出现价格为 500 美元或更低的产品,如果我将值设置得较低,它将按预期方式工作工作,但如果我尝试将值设置得更大,项目将不会过滤,例如,值设置为 500 美元,如果将值设置为 600 美元,则只有 500 美元或以下的项目会呈现,而不是 600 美元的项目.
这是我的代码:
const Shop = () => {
const [sliderValue, setValue] = useState(0);
const [filterItems, setApplyFilter] = useState(false);
const [newData, setData] = useState(data);
const checkChange = () => {
if (sliderValue > 3) {
setApplyFilter(true);
} else {
setApplyFilter(false);
}
console.log(applyFilter);
};
const applyFilter = () => {
if (filterItems === true) {
const filteredData = newData.filter((item) => item.price <= sliderValue);
console.log(filteredData);
setData(filteredData);
} else {
setData(data);
}
};
useEffect(() => {
checkChange();
applyFilter();
}, [sliderValue]);
const handleChange = (value) => {
setValue(value);
};
return (
<div className="slider-container">
<input
type="range"
min={0}
max={1000}
value={sliderValue}
onChange={(e) => handleChange(e.target.value)}
className="slider"
/>
</div>
);
}
【问题讨论】:
-
你试过 setData([...filteredData]) 吗?
-
现在试过了,不行。
标签: javascript html reactjs