未捕获的类型错误:无法读取第 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
因为
classes
是
undefined
。您应该检查类似
classes ? classes[0]?.slice(0,3) : []
dannyxnda
2022-04-05