我见过很多这样的代码:
navigator.geolocation.getCurrentPosition(
({coords}) => {
const {latitude, longitude} = coords
this.setState({
position: {
latitude,
longitude,
},
region: {
latitude,
longitude,
latitudeDelta: 0.005,
longitudeDelta: 0.001,
}
})
},
(error) => alert('Error: Are location services on?'),
{enableHighAccuracy: true}
);
我的问题是为什么以及什么时候我们在参数中使用对象解构。
为什么error
不使用对象解构,而coords
使用对象解构?
发布于 2018-07-24 23:32:30
这一切都是关于JS中的对象。我建议你多读一些关于对象的知识。
但这里有一个简单的例子。
const car = {door: "blue", tires: 4}.
当然,您可以像car.door
那样使用它来获取blue
,或者像car.tires
那样使用car.tires
来获取4
。但是您可以看到,您在任何地方都在编写相同的代码car.
。只需执行以下操作会更好:
const {door, tires} = car
然后,在其他地方,您可以简单地执行door
和tires
。这一切都与个人喜好有关。我之所以使用它,是因为它简单易懂,而且重复代码较少。没有好坏之分。
至于你为什么error
不需要解构,是因为我们只是在检查error
是否存在。这和你写的是一样的:
(error) => alert('something')
和
(Boolean(error)) => alert('something').
在这里,您甚至不关心error
内部是什么,您只想知道是否有error
。这就是为什么你不需要解构。
如果您想在error
中获取一些项,假设code
是error
的键之一。然后你可以这样做
({code}) => alert(code)
https://stackoverflow.com/questions/51508799
复制