Ale*_*uey 2 reactjs react-hooks chakra-ui
我正在基于变量加载渲染两个 Chakra UI 组件:
{loading ? (<Spinner>) : (<Text color={useColorModeValue('gray.800', 'gray.400')>Hi</Text) }
Run Code Online (Sandbox Code Playgroud)
但 IDE 警告我这一点:
ESLint: React Hook "useColorModeValue" is called conditionally. React Hooks must be called in the exact same order in every component render.
我应该如何渲染这些组件?useColorModeValue 是一个钩子
Dre*_*ese 10
useColorModeValue是一个 React hook,所以它不能有条件地调用,它违反了Hooks 规则。使用三元是一种有条件地调用它的方法。每个渲染周期都必须调用该钩子。
\n\n仅在顶层调用挂钩
\n不要\xe2\x80\x99t 在循环、条件或嵌套函数内调用 Hook。\n相反,在任何早期返回之前,始终在 React 函数的顶层使用 Hooks。
\nuseState通过遵循此规则,您可以确保每次组件渲染时\n以相同的顺序调用 Hooks。\n这\n\xe2\x80\x99 允许 React 在多个和调用之间\n正确保留 Hooks 的状态useEffect。
将其useColorModeValue拉出到函数组件的主体中,并保存返回的颜色值以供稍后传递给组件Text。
const color = useColorModeValue(\'gray.800\', \'gray.400\');\n\n...\n\n{loading ? <Spinner> : <Text color={color}>Hi</Text>}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
6176 次 |
| 最近记录: |