我有一个在更改时触发的事件。此事件检查哪个过滤器已更改,然后相应地更新状态。
如果我不使用反应钩子,我会去做这样的事情 -
const target = e.target;
const value = e.type === "checkbox" ? target.checked : target.value;
const name = e.target.name;
this.setState({ [name]: value });
如您所见,我可以使用更新状态名称,[name]但由于我使用的是反应钩子,所以我无法使用上面的内容。相反,我得到了这个 -
const [type, setType] = useState("all");
const [capacity, setCapacity] = useState(1);
const [price, setPrice] = useState(0);
const [minPrice, setMinPrice] = useState(0);
const [maxPrice, setMaxPrice] = useState(0);
const [minSize, setMinSize] = useState(0);
const [maxSize, setMaxSize] = useState(0);
const handleChange = (e) => {
const target = e.target;
const value = e.type === "checkbox" ? target.checked : target.value;
const name = e.target.name;
switch (name) {
case "type":
setType(value);
break;
case "capacity":
setCapacity(value);
break;
case "price":
setPrice(value);
break;
case "minPrice":
setMinPrice(value);
break;
case "maxPrice":
setMaxPrice(value);
break;
case "minSize":
setMinSize(value);
break;
case "maxSize":
setMaxSize(value);
break;
default:
return;
}
};
由于某种原因,您在上面看到的内容不起作用。当我触发过滤器时,它会进入案例,因为我已经对此进行了测试,但状态似乎没有更新。名称和值也已记录,它们也很好。我不确定是什么原因造成的,我只是编程的新手,所以任何帮助将不胜感激!
倚天杖
桃花长相依
函数式编程
相关分类