开发者问题收集

未捕获的类型错误:无法读取第 13:1 行未定义的属性(读取‘0’)

2022-04-05
3669

在值不确定时,在执行代码时,在第13行中遇到了一些错误> 262466181 971706072

3个回答

如果您的 danceClass 对象没有 classes 属性,则 classes 将为 undefined ,并且 classes[0] 将产生您所看到的错误。

请尝试使用 可选链接

const [dance, setDance] = useState(classes?.[0]?.slice(0, 3) ?? []);

如果 classes 为空数组,上述方法也将有效。

Phil
2022-04-05

我建议您对可能未定义的值使用回退,例如

const dispatch = useDispatch();
  const danceClass = useSelector((state) => state?.class ?? {});
  const { classes = [] } = danceClass;

  const [dance, setDance] = useState(
    classes[0]?.slice(0, 3) ?? [],
  );

这样,您将检查 state.class 是否为空值,如果为空,则使用 空合并运算符 ,您将分配一个空对象。

然后,在对类进行解构时,如果 danceClass 是一个没有属性 classes 的空对象,那么您得到的是一个初始化为空数组的变量 classes。

然后,再次,使用 classes[0]?.slice(0, 3) 中的链接运算符,您正在检查第一个元素是否为空,(通过 可选链接运算符 )如果这是您要使用 空合并运算符

再次将舞蹈变量设置为空数组
Francesco Vattiato
2022-04-05

因为 classesundefined 。您应该检查类似

classes ? classes[0]?.slice(0,3) : []
dannyxnda
2022-04-05