react/规则-钩子 严谨
它的作用
强制执行钩子规则,确保 React 钩子仅在有效上下文中调用,并且按正确的顺序调用。
为什么这是不好的?
React 钩子必须遵循特定规则,以确保其正常工作:
- 只能在顶层调用钩子(永远不要在循环、条件或嵌套函数中调用)
- 只能从 React 函数组件或自定义钩子中调用钩子
- 每次组件渲染时,钩子必须以相同的顺序被调用
违反这些规则可能导致状态损坏或组件行为变得不可预测的错误。
示例
此规则的 错误 代码示例:
javascript
// 不要在循环、条件或嵌套函数中调用钩子
function BadComponent() {
if (condition) {
const [state, setState] = useState(); // ❌ 条件中的钩子
}
for (let i = 0; i < 10; i++) {
useEffect(() => {}); // ❌ 循环中的钩子
}
}
// 不要从普通 JavaScript 函数中调用钩子
function regularFunction() {
const [state, setState] = useState(); // ❌ 普通函数中的钩子
}此规则的 正确 代码示例:
javascript
// ✅ 在 React 组件的顶层调用钩子
function GoodComponent() {
const [state, setState] = useState();
useEffect(() => {
// 效果逻辑在此处
});
return <div>{state}</div>;
}
// ✅ 从自定义钩子中调用钩子
function useCustomHook() {
const [state, setState] = useState();
return state;
}如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"plugins": ["react"],
"rules": {
"react/rules-of-hooks": "error"
}
}bash
oxlint --deny react/rules-of-hooks --react-plugin