Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 类型脚本“属性”;isPrivate“;类型“”上不存在;{children?:ReactNode}";_Reactjs_Typescript - Fatal编程技术网

Reactjs 类型脚本“属性”;isPrivate“;类型“”上不存在;{children?:ReactNode}";

Reactjs 类型脚本“属性”;isPrivate“;类型“”上不存在;{children?:ReactNode}";,reactjs,typescript,Reactjs,Typescript,我需要为我的routes组件创建一个isLoggedIn中间件,为此,我使用AuthContext并在私有路由上添加一个道具:isPrivate。然而,当我尝试接收这个道具时,我得到了前面提到的错误 我知道我可以创建一个接口并设置一个isPrivate:any,但我想知道是否有一种“正确”的方法来实现这一点 我怎么能对TypeScript说有一个名为isPrivate的道具,并且没有定义 伊斯洛格丁: const isLoggedIn: React.FC = ({ isPrivate, ...r

我需要为我的routes组件创建一个isLoggedIn中间件,为此,我使用AuthContext并在私有路由上添加一个道具:isPrivate。然而,当我尝试接收这个道具时,我得到了前面提到的错误

我知道我可以创建一个接口并设置一个
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}> {}