【发布时间】:2020-06-30 09:04:55
【问题描述】:
我正在做类似以下的事情
(https://stackoverflow.com/a/57847874/433570)
const LowerCard = (props) => {
let { review_meta, step } = props
const [component, setComponent] = useState('');
const {state, editDispatch} = useContext(ReviewMetaEditCardDispatch);
useEffect(() => {
// https://stackoverflow.com/a/57847874/433570
const setDynamicComponent = async () => {
let DynamicComponent
switch(state.step) {
case 'title':
DynamicComponent = await import('review/react/components/review-meta-edit-card/step/title')
break
}
if (DynamicComponent) {
setComponent(DynamicComponent.default)
}
}
setDynamicComponent()
}, []);
if (!component) {
return null
}
return (
<View>
<component/>
</View>
)
}
上面的代码有效,但是当我在useEffect 调用中删除[] 时,它会导致
index.js:1 Warning: Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function.
我猜它在抱怨你不应该在useEffect 中调用setComponent(这是一个钩子)。
我该如何克服这个问题?
【问题讨论】:
-
哦,那我该如何运行上面的代码来实现等价的componentDidUpdate呢?
-
我尝试添加 [state.step] 这是导致我更改组件的原因,但它仍然会产生相同的错误
-
效果里面还有其他条件吗?什么时候重新运行?
标签: reactjs react-native async-await