reactjs - React Redux - 错误:无效的钩子调用。Hooks 只能在函数组件的主体内部调用
问题描述
我想使用useSelector()
钩子,但我收到了上面提到的错误。我在哪里可以使用这个钩子来访问我的状态数据?
function RetrieveDataSources() {
var dataSources = useSelector(state => state.dataSourcesReducer);
console.log(dataSources);
}
class Data extends Component {
constructor(props) {
super(props);
this.state = {
errorMessage: false,
isLoading: true,
resultData: propsState && propsState.resultData,
};
RetrieveDataSources();
}
render() {
return( some return code );
}
}
export default Data;
解决方案
钩子只能在函数组件或自定义钩子中调用。您是从普通函数调用它,而不是因此出现错误。
此外,您似乎想从一个类组件中调用一个钩子——不幸的是,这并不直接受支持。如果您必须使用类组件,请考虑使用 mapStateToProps & connect apis 从您的 redux 存储中获取它。
如果你仍然喜欢在类组件中使用钩子,这里有一个使用函数组件和 React 渲染道具与父组件共享它的示例。这通常由库完成,尽管人们无法确定调用者是使用函数组件还是类组件。
推荐阅读
- jmeter - JMeter - 仅用于 CLI 负载测试的最小/紧凑版本
- mysql - 从删除外键的表中选择会导致 ProgrammingError: 1146, "Table
不存在” - html - 如何使 div 仅从左右四舍五入?
- c# - CS1503:参数 3:无法从“double”转换为“UnityEngine.Quaternion”帮助!unity 2D c#
- firebase - 在 Firestore 中检索嵌套子集合的文档 ID
- python - BeautifulSoup4 将输出 find_all() 一个一个地打印为数组
- python - 如何更改 discord.py 中的帮助命令
- minecraft - Minecraft - 使用命令方块让生物敌对其他生物
- c# - 外键的类属性
- javascript - 为什么使用二进制图像发起 jQuery POST 请求比使用 Base64 编码的等价物要慢?