使用Redux的useSelector时出现TypeError:对象不可迭代
解决Redux useSelector对象不可迭代错误
错误原因
你在使用useSelector获取state.user时,用了数组解构([]),但state.user是对象类型。数组解构要求右侧是可迭代的(比如数组),对象不具备这种特性,因此触发了TypeError: Object is not iterable错误。
修复代码
改用对象解构来匹配state.user里的属性,因为对象解构是通过属性名取值,而非顺序:
const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const dispatch = useDispatch(); // 替换数组解构为对象解构 const { isFetching, error } = useSelector((state) => state.user); const handleClick = (e) => { e.preventDefault(); login(dispatch, { username, password }); };
也可以分开单独获取每个属性:
const isFetching = useSelector((state) => state.user.isFetching); const error = useSelector((state) => state.user.error);
内容的提问来源于stack exchange,提问作者Suleyman Eminbeyli
相关产品推荐
相关产品推荐

