React:Hook在函数组件的主体中给出了一个错误



我想把我所有的url放在一个文件中。我需要调用AuthToken方法来返回令牌。

当我调用AuthToken时,里面有useSelector钩子,它会给我这个错误:

"无效的挂钩调用。钩子只能在函数组件的主体内部调用">

useSelector在函数中。我不明白我为什么会犯这个错误。我该怎么修?

这是我的代码:

import { useSelector } from "react-redux";
import React from "react";
const AuthToken = () => {
const token = useSelector((state: any) => state.facebookAuth.accessToken);
console.log("Token" + token);
return token; 
};
const version: string = "v10.0";
const baseURL: string = "https://graph.facebook.com/";
const getUserPagesURL: string = `${baseURL}${version}/me/accounts?access_token=${AuthToken()}`;
export { getUserPagesURL };
React钩子有一条规则:它们只能在组件内部调用。

您正在调用的函数不是组件。

例如,如果在Form组件中使用useSelector,它会起作用。

这行代码不在组件的主体内,因此它不能调用钩子:

const getUserPagesURL: string = `${baseURL}${version}/me/accounts?access_token=${AuthToken()}`;

你可以把它改成这样:

const version: string = "v10.0";
const baseURL: string = "https://graph.facebook.com/";
export const useUserPagesUrl = () => {
const token = useSelector((state: any) => state.facebookAuth.accessToken);
return `${baseURL}${version}/me/accounts?access_token=${token}`;
}
// To be used like:
const ExampleComponent = (props) => {
const url = useUserPagesUrl();
return (
<div>
{url}
</div>
);
}

参见:挂钩规则

相关内容

  • 没有找到相关文章

最新更新