【发布时间】:2021-06-30 19:22:15
【问题描述】:
我正在使用带有 React 的 TypeScript,我想将一个 userId 属性传递给每个渲染的组件。
我不想将userId 添加到每个组件的 props 中,并且无法弄清楚如何让每个 React 组件都具有该 prop。
为了让这一切变得更加困难,现在它给了我一个 TS 错误JSX element type 'Component' does not have any construct or call signatures.
我将如何使这一切正常工作?
type Props = {
children: JSX.Element;
// I have tried many different things, but nothing worked...
// React.ComponentType<{ user: PartialUser }>;
};
type PartialUser = {
id: number;
username: string;
email: string;
};
const PrivateRoute = ({ children, ...rest }: Props) => {
const { data, error, loading } = useMeQuery();
let me;
let user;
if (data?.me) {
me = data!.me!;
user = {
id: me.id,
username: me.username,
email: me.email,
};
}
if (error) console.error(error);
const Component = children;
return (
<>
{!loading && user ? (
<Route {...rest}>
<Component user={user} />
</Route>
) : (
<Redirect to="/login" />
)}
</>
);
};
【问题讨论】:
-
您可能对React Context感兴趣。
标签: reactjs typescript react-router react-router-dom