【发布时间】:2020-12-10 12:37:11
【问题描述】:
当我的Powers 被获取/未定义时,我想呈现后备组件。我使用代码在我的逻辑中实现了React.Suspense:
<Suspense fallback={<p>Loading</p>}>
<RoutesPowers />
</Suspense>
我的RoutesPowers 是
const Powers = [ ... ];
const RoutesPowers = () => {
const [powers, setPowers] = useState(null);
const fetchPowers = () => setTimeout(() => setPowers(Powers), 3000);
useEffect(() => fetchPowers(), []);
return ( powers.map(route => <RoutePowers route={route}/> )
};
但它给了我Cannot read property "map" of null 可能是因为powers 为空。这意味着React.Suspense 无法正常工作。有人可以帮我解决这个问题吗?
【问题讨论】:
-
不是悬念问题 是因为useState默认初始化powers值导致的javascript错误。尝试使用空数组,例如 const [powers, setPowers] = useState([]);
-
哦,是的,我的错。虽然还没有修好。当我使用 React DevTools 分析
元素的悬念时,它一直显示 suspense: false,我没有看到我的回调元素而不是,我只看到一个空的 跨度>
标签: reactjs async-await react-suspense