Reactjs 类型脚本“属性”;isPrivate“;类型“”上不存在;{children?:ReactNode}";
我需要为我的routes组件创建一个isLoggedIn中间件,为此,我使用AuthContext并在私有路由上添加一个道具:isPrivate。然而,当我尝试接收这个道具时,我得到了前面提到的错误 我知道我可以创建一个接口并设置一个Reactjs 类型脚本“属性”;isPrivate“;类型“”上不存在;{children?:ReactNode}";,reactjs,typescript,Reactjs,Typescript,我需要为我的routes组件创建一个isLoggedIn中间件,为此,我使用AuthContext并在私有路由上添加一个道具:isPrivate。然而,当我尝试接收这个道具时,我得到了前面提到的错误 我知道我可以创建一个接口并设置一个isPrivate:any,但我想知道是否有一种“正确”的方法来实现这一点 我怎么能对TypeScript说有一个名为isPrivate的道具,并且没有定义 伊斯洛格丁: const isLoggedIn: React.FC = ({ isPrivate, ...r
isPrivate:any
,但我想知道是否有一种“正确”的方法来实现这一点
我怎么能对TypeScript说有一个名为isPrivate的道具,并且没有定义
伊斯洛格丁:
const isLoggedIn: React.FC = ({ isPrivate, ...rest }) => {
const { authenticated } = useContext(AuthContext);
if (isPrivate && !authenticated) return <Redirect to="/login" />;
return <Route {...rest} />;
};
const isLoggedIn:React.FC=({isPrivate,…rest})=>{
const{authenticated}=useContext(AuthContext);
如果(isPrivate&&!authenticated)返回;
返回;
};
路线:
<Route isPrivate exact path="/users" component={Users} />
在组件上声明道具而不定义道具时,默认值为布尔值:true,例如:
<CustomRoute isPrivate exact path="/users" component={Users} />
ps:您不需要创建接口,您可以简单地添加为类型参数,如:
functional-comonent: React.FC<{prop: type, ...rest}> {}
功能组件:React.FC{}
React.FC
???哦,是的,但我现在发现,如果以前没有定义,道具的默认类型为布尔型!我会回答的
functional-comonent: React.FC<{prop: type, ...rest}> {}