错误:未定义不可迭代(无法读取属性Symbol(Symbol.iterator))

问题描述 投票:0回答:1
const [{user},dispatch] =useStateValue()

const login = async () => {
  const { user: { refreshToken, providerData } } = await signInWithPopup(firebaseAuth, provider);
  dispatch({
    type: actionType.SET_USER,
    user: providerData[0]
  });

undefined 不可迭代(无法读取属性 Symbol(Symbol.iterator)) TypeError: undefined 不可迭代(不能 读取属性 Symbol(Symbol.iterator))

我在第一行遇到错误,我不知道该怎么办?我找不到任何解决方案。

javascript reactjs react-hooks undefined-symbol
1个回答
0
投票

问题

在您共享的第一行代码中,它试图从未定义的初始状态值解构

user
属性。

const [{ user }, dispatch] = useStateValue();

这实际上与

相同
const [{ user }, dispatch] = useStateValue(undefined);

const { user } = undefined
每天都会抛出异常。

解决方案

要修复,您应该只提供可以解构的定义的初始状态。

const [{ user }, dispatch] = useStateValue({});

有了这个,您可以安全地从

user
解构
{}
,并且
user
将具有未定义的值。如果您希望
user
有一些默认值,那么以下任一方法都可以。

const [{ user }, dispatch] = useStateValue({ user: "default value" });
const [{ user = "default value" }, dispatch] = useStateValue({});
© www.soinside.com 2019 - 2024. All rights reserved.