reactjs - 尝试访问以前的道具值时出现无效的钩子错误
问题描述
我有以下代码。如果值发生变化,我希望我的日志触发。
const usePrevious = (value) => {
const ref = useRef();
useEffect(() => {
ref.current = value;
});
return ref.current;
}
const App = (props) => {
useEffect(() => {
const previousValue = usePrevious(props.value)
if (previousValue !== props.value) {
console.log('fire')
};
}, []);
return <div />
}
出于某种原因,我收到此错误:“无效的钩子调用。只能在函数组件的主体内部调用钩子。”
我不确定为什么。难道我做错了什么?
解决方案
我有同样的问题。我相信错误是这一行:
const previousValue = usePrevious(props.value)
在你的情况下不能在钩子(useEffect)中使用。
如果您将该行移到 useEffect 挂钩的上方和外部,它应该会为您修复它。
https://reactjs.org/warnings/invalid-hook-call-warning.html#break-the-rules-of-hooks
推荐阅读
- android - 我可以用 Flutter FlutterBlue 收听蓝牙断开连接吗?
- .net - MailKit.IMapFolder:在类型中找不到方法搜索
- java - 安卓聊天,新增消息显示
- java - 将一个 Maven 项目构建到另一个 Maven 项目中?
- java - 如何解决警告:此 AsyncTask 类应该是静态的,否则可能会发生泄漏
- firebase - 如何使用 Firebase 在 React Native 中使用电话号码重置密码?
- javascript - 获取表单数据后如何在 Sails.js 中发送操作?
- matplotlib - 如何理解图上生成的 LSTM 性能?
- javascript - 防止默认滚动
- java - Spring Boot 安全性以允许除一个之外的所有端点