【发布时间】:2021-01-22 22:26:04
【问题描述】:
我尝试在 Context Provider 中进行身份验证流程,但在使用 TypeScript 时遇到了问题。 这是Provider代码的问题片段:
interface AuthUserProviderProps {
children?: React.ReactNode
}
interface AuthUserInterface {
token: string;
setToken: (value: string) => void;
loggedIn: boolean;
};
setBrand: (value: {}) => void;
}
export const authUser = createContext<AuthUserInterface | null >(null);
const AuthUserProvider = ({ children }: AuthUserProviderProps) => {
if (accessTokenVAR() && !jwtToken?.roles.toString().includes('admin')) {
return isBrowser ? window.location.replace('www.somewhere.com') : ''
}
return (
<authUser.Provider
value={{
token,
setToken,
loggedIn,
}}
>
{ children}
</authUser.Provider>
);
};
export default AuthUserProvider;
App.tsx
export default function App({ Component, pageProps }: AppProps) {
const apolloClient = useApollo(pageProps.initialApolloState);
return (
<ThemeProvider theme={TifTheme}>
<AuthUserProvider> <===This line throws error
<ApolloProvider client={apolloClient} >
<CssBaseline />
<Component {...pageProps} />
</ApolloProvider>
</AuthUserProvider>
</ThemeProvider>
);
}
错误是“AuthUserProvider”不能用作 JSX 组件。它的返回类型 'void | "" | Element' 不是有效的 JSX 元素。类型“void”不可分配给类型“Element”。它是由返回重定向引起的。 但我不知道如何处理这个错误
【问题讨论】:
标签: reactjs typescript types react-context