Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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
Javascript 这是类型注释、对象还是其他内容?_Javascript_Reactjs - Fatal编程技术网

Javascript 这是类型注释、对象还是其他内容?

Javascript 这是类型注释、对象还是其他内容?,javascript,reactjs,Javascript,Reactjs,我在看的时候偶然发现了这个语法: import React, { Component } from 'react'; const PrivateRoute = ({component:Component, ...rest}) => ( //(...) <Component {...props} /> // (...) ); 这是ES6中的命名对象。下面 const PrivateRoute = ({component:Component, ...rest}) =>

我在看的时候偶然发现了这个语法:

import React, { Component } from 'react';

const PrivateRoute = ({component:Component, ...rest}) => (
//(...)
  <Component {...props} />
// (...)
);
这是ES6中的命名对象。下面

const PrivateRoute = ({component:Component, ...rest}) => (
表示将作为
component
属性传递给
PrivateRoute
的任何内容,都可以使用
component
变量使用它

我对:组成部分感到困惑。这看起来像一个静态类型注释

是的,它看起来像是因为全局
组件
类的名称被阴影覆盖,因此它看起来像是
组件
使用Typescript注释作为
组件
键入的。但是,在Typescript中,类型将跟随对象文字,因此:

 ({ component: Component, ...rest }: { component: Component, rest: any })
因此,实际上第一个
组件
是解构变量的名称,而第二个
组件
组件
作为一个组件进行分类。我会明确地将内部变量重命名为更有意义的名称,以防止阴影:

 ({ component: ChildComponent, ...rest }) => (
   //...
   <ChildComponent {...props} />
)

这肯定会与Typescript冲突?@murat不,Typescript注释位于对象
{a:b}:{a:type}
之后。是的,这是令人困惑的(这就是为什么我最初用这个来代替错误的东西)在Typescript中你会使用({component:component,{rest}:{component:component,rest:any})啊,我明白了。谢谢这实际上对ReactJs非常有用。@Asik是的,它只是一个任意的名称。但是由于React约定,显然需要将组件传递给
component
属性,因此在名称中使用大写名称:
component
 ({ component: ChildComponent, ...rest }) => (
   //...
   <ChildComponent {...props} />
)
 props => {
  const ChildComponent = props.component,
      rest = props;

  return <ChildComponent {...rest}/>
 };
 ({ component: ChildComponent = DefaultComponent, ...rest }) =>