有没有一种有效的方法来加载当前位置以响应状态?
Is there an efficient way to load current location to react state?
抱歉,如果这看起来像一个愚蠢的问题,但我坚持使用 navigator.geolocation JavaScript API.
我想加载当前用户位置以在组件加载时声明。
我的状态是
state = {
currentLatitude : '',
currentLongitude : ''
}
我的组件安装是:
componentDidMount() {
navigator.geolocation.getCurrentPosition(function(position) {
console.log("Latitude is : ", position.coords.latitude);
console.log("Longitude us : ", position.coords.longitude);
});
}
这会将纬度和经度记录到控制台,但是当我尝试将纬度设置为 state 时,出现错误“无法读取 属性 setState of undefined”:
componentDidMount() {
navigator.geolocation.getCurrentPosition(function(position) {
this.setState({
currentLatitude: position.coords.latitude,
currentLongitude: position.coords.longitude
})
});
}
我也试过了
componentDidMount() {
this.setState({
currentLatitude: navigator.geolocation.getCurrentPosition.coords.latitude,
currentLongitude: navigator.geolocation.getCurrentPosition.coords.longitude
})
}
但是我得到了同样的错误。
完整的 class 组件是:
import React, { Component } from 'react'
class Location extends Component {
state = {
currentLatitude : '',
currentLongitude : ''
}
componentDidMount() {
navigator.geolocation.getCurrentPosition(function(position) {
console.log("Latitude is : ", position.coords.latitude);
console.log("Longitude us : ", position.coords.longitude);
console.log(position)
});
}
handleChange = (e) => {
localStorage.setItem([e.target.id], e.target.value)
this.setState({
[e.target.id]: e.target.value
})
}
handleSubmit = (e) => {
e.preventDefault();
console.log(this.state)
}
render() {
return (
<div className="location">
<p>{this.state.currentLongitude}</p>
<p>{this.state.currentLatitude}</p>
</div>
)
}
}
导出默认位置
请协助如何将此加载到状态。
谢谢。
当您传递回调函数时,this
引用它最终被调用时所在的上下文。使用箭头函数来代替组件上下文:
navigator.geolocation.getCurrentPosition(position => {
this.setState({
currentLatitude: position.coords.latitude,
currentLongitude: position.coords.longitude
})
});
抱歉,如果这看起来像一个愚蠢的问题,但我坚持使用 navigator.geolocation JavaScript API.
我想加载当前用户位置以在组件加载时声明。
我的状态是
state = {
currentLatitude : '',
currentLongitude : ''
}
我的组件安装是:
componentDidMount() {
navigator.geolocation.getCurrentPosition(function(position) {
console.log("Latitude is : ", position.coords.latitude);
console.log("Longitude us : ", position.coords.longitude);
});
}
这会将纬度和经度记录到控制台,但是当我尝试将纬度设置为 state 时,出现错误“无法读取 属性 setState of undefined”:
componentDidMount() {
navigator.geolocation.getCurrentPosition(function(position) {
this.setState({
currentLatitude: position.coords.latitude,
currentLongitude: position.coords.longitude
})
});
}
我也试过了
componentDidMount() {
this.setState({
currentLatitude: navigator.geolocation.getCurrentPosition.coords.latitude,
currentLongitude: navigator.geolocation.getCurrentPosition.coords.longitude
})
}
但是我得到了同样的错误。
完整的 class 组件是:
import React, { Component } from 'react'
class Location extends Component {
state = {
currentLatitude : '',
currentLongitude : ''
}
componentDidMount() {
navigator.geolocation.getCurrentPosition(function(position) {
console.log("Latitude is : ", position.coords.latitude);
console.log("Longitude us : ", position.coords.longitude);
console.log(position)
});
}
handleChange = (e) => {
localStorage.setItem([e.target.id], e.target.value)
this.setState({
[e.target.id]: e.target.value
})
}
handleSubmit = (e) => {
e.preventDefault();
console.log(this.state)
}
render() {
return (
<div className="location">
<p>{this.state.currentLongitude}</p>
<p>{this.state.currentLatitude}</p>
</div>
)
}
}
导出默认位置
请协助如何将此加载到状态。
谢谢。
当您传递回调函数时,this
引用它最终被调用时所在的上下文。使用箭头函数来代替组件上下文:
navigator.geolocation.getCurrentPosition(position => {
this.setState({
currentLatitude: position.coords.latitude,
currentLongitude: position.coords.longitude
})
});