我正在做一个本机反应项目,我在互联网上找到了解决我问题的方法,但我不理解函数的哪一行
componentDidUpdate(propsOld) { // line 1
const { fill } = this.props; // line 2
const { fill:fillOld } = propsOld; // line 3
if (fill !== fillOld) { // line 4
Animated.timing(this.anim, { toValue:fill, duration:2000 // line 5 }).start();
}
}
我不理解的行是第3行:
const { fill:fillOld } = propsOld;
我理解当单个变量或多个变量用逗号',',
分开时花括号的使用有人用冒号':'分隔时,请给我解释一下的意思吗?
答案 0 :(得分:2)
使用:而不是,是它创建了填充别名。因此现在可以将fill称为fillOld。所以如果我想把条例草案称为弗雷德,我会做 {bill:fred}
答案 1 :(得分:1)
基本上是在销毁对象时重命名变量。
如果您有这样的对象:
const obj = {
prop1: 'prop1',
prop2: 'prop2',
prop3: 'prop3',
}
,并且您想获取变量prop2
,可以这样做:
const { prop2 } = obj;
但是如果您已经定义了具有相同名称的内容怎么办?像这样的块,其中您已经定义了prop4
,并且想在解构时获取该变量?
const prop4 = 'something';
const obj = {
prop1: 'prop1',
prop2: 'prop2',
prop3: 'prop3',
prop4: 'else'
}
您不能执行以下操作:const { prop4 } = obj;
因为prop4
已经存在并且它也是const
所以基本上您可以像这样重命名它:
const { prop4: prop4duplicated } = obj;
基本上,在您的代码上:
const { fill } = this.props;
const { fill:fillOld } = propsOld;
它正在生成两个变量fill
和fillOld
,这是因为fill
已经存在,然后将其重命名为fillOld