reactjs - 如何避免错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用吗?
问题描述
我有单独的文件,我在其中获取和发布 axios 调用。所以在这个文件中我有这个代码
import { useSelector, useDispatch } from "react-redux";
import __ from 'lodash'
import axios from "axios";
import { getPersistedToken } from "src";
import { PROCESS_STATUS } from "src/model";
export const getAxiosQuery = (endpoint) => async () => {
const dispatch = useDispatch()
console.log(dispatch)
return await axios.get(endpoint, {
headers: {
'Authorization': 'Bearer ' + getPersistedToken(),
}
}).then((res) => {
dispatch(processStatusAction(PROCESS_STATUS.DONE))
return res
},
).catch(error => {
dispatch(processStatusAction(PROCESS_STATUS.FAIL))
});
}
有什么方法可以允许在我的函数中使用反应钩子吗?因为我不会在我所有的调用中传递这个函数的参数中的调度变量
解决方案
有什么方法可以允许在我的函数中使用反应钩子吗?因为我不会在我所有的调用中传递这个函数的参数中的调度变量
不,你不可能在你的函数中使用钩子。你只能在(功能性)React 组件中使用钩子。信息在这里。
在您的情况下,您可以做的是创建一个自定义钩子(例如useAxiosQuery
),它检索dispatch
函数并自动注入它,例如:
const useAxiosQuery = (endpoint) => {
const dispatch = useDispatch();
return getAxiosQuery(endpoint, dispatch);
}
推荐阅读
- javascript - 当我在邮递员(节点js)中使用post raw时发布空
- python - 检查方法是否返回正确的字符串
- r - R 闪亮书签按钮
- go - 构建约束排除所有 Go protobuffer 生成的文件
- jmeter - 多个随机值转换为多个变量 - Jmeter
- tensorflow2.0 - {'error': 'output_shape 的元素数量不正确:2 应该是:1\n\t [[{{node transform/SparseToDense_3}}]]'}
- html - Django:模板扩展。子模板找不到静态图片
- powershell - powershell 脚本安装功能未正确执行
- html - Angular:在一定时间间隔后从 url 请求和替换图像
- c# - 创建 zip 文件时此代码可能损坏了几个文件的任何原因