我遇到了一些以前从未见过的语法。当我处理对象以及使用React时,您可以通过以下方式简化命名空间:
let {someProp} = prevProps
这样做可以避免每次我想使用prevProps.someProp
的情况。
我不明白的是这种语法
let {someProp: oldData} = prevProps
console.log(someProp)
将显示prevPros.someProp
的值,但 WHERE oldData
的来源是?
console.log(olddata)
将显示undefined
,但下方的console.log(oldData)
将显示先前的道具。
答案 0 :(得分:3)
let {someProp: myAlias} = prevProps
此语法允许您使用别名,例如,可以在代码中使用myAlias
,而不是someProp
,这称为对象分解
如@FelixKling here is the official reference的评论中所述。
提供的链接中的示例:
let o = {p: 42, q: true};
let {p: foo, q: bar} = o;
console.log(foo); // 42
console.log(bar); // true
答案 1 :(得分:1)
是:
let {someProp} = prevProps
与此类似:
let someProp = prevProps.someProp;
这:
let {someProp: oldData} = prevProps
将与此类似:
let oldData = prevProps.someProp
答案 2 :(得分:1)
看看这个link
基本上,您正在解构 prevProps,在这种情况下,oldData
的值将为someProp
答案 3 :(得分:1)
此语法是ES6中称为对象解构的闪亮新事物之一。
这是一个详尽的示例,说明了如何以不同方式使用解构
const person = {
first: 'Jack',
last: 'Daniels',
address: {
city: 'Dallas',
}
};
// destructure as it is
const { first, last } = person;
// destructure with custom name
const { first: firstName, last: lastName } = person;
// destructure with default value
const { first, last, middle = 'The Boss' } = person;
// destructure with custom name and default value
const { first, last, middle: middleName = 'The Boss' } = person;
// destructure nested keys
const { first, last, address: { city } } = person;
// destructure nested keys with custom name
const { first, last, address: { city: myCity } } = person;
// destructure nested keys safely
const { first, last, address: { city } = {} } = person;
// destructure rest of the values
const { first, ...rest } = person; // => rest will have all keys but first