![](/img/trans.png)
[英]Modify this whitelist function, so that it returns an object with specific key value fields
[英]My function returns an object. How to set return value to specific key value in React
我的反應代碼中有一個 function ......
const getLatLngFromAddress = async () => {
try {
const response = await Geocode.fromAddress(state.address.address1)
const { lat, lng } = response.results[0].geometry.location;
return { lat, lng }
} catch (err) {
console.log(err.message)
}
}
返回 object。 我想將我的 state 設置為僅 object 的特定鍵,而不是 object 本身...
useEffect(async () => {
setState({
...state,
address: {
...state.address,
lat: await getLatLngFromAddress().lat,
lng: await getLatLngFromAddress().lng
}
})
}, []);
上面的 useEffect 返回未定義。 有沒有辦法做到這一點?
您需要從 promise 解析的值中讀取屬性。 目前,您正在嘗試從 promise 本身讀取它們,然后await
那些undefined
的值。
lat: (await getLatLngFromAddress()).lat,
但是,您調用getLatLngFromAddress
兩次。 將值存儲在變量中,然后重用它們。
useEffect(async () => {
const latlng = await getLatLngFromAddress()
setState({
...state,
address: {
...state.address,
...latlng,
}
})
}, []);
調用該方法一次,並將其設置為您的 state:
useEffect(async () => {
const {lat, lng} = await getLatLngFromAddress();
setState({
...state,
address: {
...state.address,
lat: lat,
lng: lng
}
})
}, []);
如果您不想重復所有變量,也可以傳播結果:
useEffect(async () => {
const result = await getLatLngFromAddress();
setState({
...state,
address: {
...state.address,
...result
}
})
}, []);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.