【发布时间】:2019-05-13 19:15:44
【问题描述】:
我有以下 React 组件:
export default function AuthExample () {
return (
<Router>
<div>
<AuthButton/>
<ul>
<li><Link to="/public">Public Page</Link></li>
<li><Link to="/protected">Protected Page</Link></li>
</ul>
<Route path="/public" component={Public} />
<Route path="/login" component={ Login } />
<PrivateRoute path='/protected' component={ Protected } />
</div>
</Router>
)
}
我的困难是理解传递给组件的参数以及它是如何在创建这个组件的函数中拆箱的,下面是函数:
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route {...rest} render={(props) => (
fakeAuth.isAuthenticated === true
? <Component {...props} />
: <Redirect to={{
pathname: '/login',
state: { from: props.location }
}} />
)} />
)
那么这里的component: Component 到底是什么?是 ES-5 destructive assignment 吗?那么<Component {...props} />到底是什么?
【问题讨论】:
-
不叫“破坏性赋值”。这是解构赋值。 “破坏性”意味着某些东西被破坏了,但实际上解构赋值是避免改变原始对象或数组的有用方法。所以从某种意义上说,它是破坏的反面。
标签: reactjs ecmascript-6