我的默认状态如下:
const [selectedFilters, setSelectedFilters] = useState({movie: 'default' , species : 'default' , planet : 'default'});
如何将电影值更新为其他值。我尝试过:
const handleMovieChange = (e) => {
console.log(e.target.value)
setSelectedFilters(prevState => ({ ...prevState, movie : e.target.value}));
}
但是,当我更改值时,这会给我:
×
TypeError: Cannot read property 'value' of null
(anonymous function)
C:/Users/klmaa/OneDrive/Bureaublad/swcase/client/src/App.js:48
45 |
46 | const handleMovieChange = (e) => {
47 | console.log(e.target.value)
> 48 | setSelectedFilters(prevState => ({ ...prevState, movie : e.target.value}));
| ^ 49 | }
50 |
51 | console.log(selectedFilters);
答案 0 :(得分:2)
这里不需要箭头功能。只需访问普通对象selectedFilters
并传递movie
的更新值,创建一个新对象,然后将此新对象传递给setSelectedFilters
:
setSelectedFilters({...selectedFilters, movie: e.target.value});
答案 1 :(得分:1)
BTW,基于React文档,建议将其拆分为多个状态变量。 https://reactjs.org/docs/hooks-state.html#tip-using-multiple-state-variables。
以下内容适用于您的情况。
const [movie, setMovie] = useState("default");
const [species, setSpecies] = useState("default");
const [planet, setPlanet] = useState("default");
const handleMovieChange = e => {
console.log(e.target.value);
setMovie(e.target.value);
};