我仍然不熟悉ES6的所有魔力。我在一篇在线文章中看到了这段代码,我不确定PrivateRoute
是如何解构输入道具的。 component: Component
在这种情况下做了什么?
const PrivateRoute = ({ component: Component, ...rest }) => (
// Code here
)
我知道我可以做这样的事情来构建一个对象
obj = {firstName: 'John', lastName: 'Doe'};
{first, last} = obj;
并拥有first = 'John'
,last = 'Doe'
;但是,我对示例代码中引入冒号感到困惑。
以下是完整文章的链接:https://tylermcginnis.com/react-router-protected-routes-authentication/
答案 0 :(得分:2)
在解构中使用:
有两种基本方法:
如果:
的右侧是一个对象或数组,那么您正在对一个子对象进行解构。如果右侧是标识符,那么您将对:
const { component: { example } } = opts
// equivalent to
const example = opts.component.example
const { component: Component } = opts
// equivalent to:
const Component = opts.component
const { component: { example: Component } } = opts
// equivalent to
const Component = opts.component.example
答案 1 :(得分:1)
对于通过解构获得的属性使用不同的名称。
let obj = {
a: 'thing A',
b: 'thing B'
}
let { a: thing } = obj
console.log(thing) // outputs: "thing A"
答案 2 :(得分:0)
上面已经发布了它,因为它在那里阅读文档。您要查找的部分是:“分配给新变量名称”。
特别是在上面的示例中,“component”被分配给以大写字母C开头的新变量。