【发布时间】:2022-02-17 02:51:37
【问题描述】:
我是 hooks 的新手,到目前为止印象深刻,但是,如果我尝试在函数内部使用 hooks,它似乎会抱怨(无效的 hook 调用。只能在函数组件的主体内部调用 hooks . 这可能是由于以下原因之一)。
我在一个基本文件中有几个常用的 API 函数,用于从 API 中检索数据。他们不返回任何东西,只是将(useDispatch)分发到商店,并且使用此状态的相关组件在整个应用程序中更新。我知道这可能是原因,因为它没有返回 React 元素,但有没有办法解决这个问题或更好、更“推荐”的 React 方法?如果我必须手动传入用户并在父组件中分派返回的结果,这不是世界末日,但我宁愿将它保存在一个地方并在这个函数中处理它,以便所有父组件都有要做的就是在状态改变时更新。
这是函数:
export async function getCar(id) {
// It's complaining about these hooks
const { user } = useSelector(state => state.auth);
const dispatch = useDispatch();
try {
let response = await axios.get(`${baseURL}api/cars/getCar/${id}/${user.id});
if (response.data.successCode === 200) dispatch(setCar(response.data));
} catch (error) {
}
}
用法:const carsList = getCar("id");
谢谢大家, 非常感谢。
【问题讨论】:
-
你需要在功能组件的主体块中拥有所有的钩子。不能用在其他功能里面。
-
这在 react 文档中的 hooks 规则中有解释:reactjs.org/docs/hooks-rules.html
标签: javascript reactjs function react-hooks