无法在 React 中返回带有地理位置坐标的 JSX

Posted

技术标签:

【中文标题】无法在 React 中返回带有地理位置坐标的 JSX【英文标题】:Can't return JSX with Geolocation coordinates in React 【发布时间】:2018-09-29 01:09:21 【问题描述】:

我正在尝试使用 Geolocation API 显示我的当前位置。我试图通过在一个方法中返回数据并在render() 的返回中调用该方法来做到这一点。问题是它没有显示任何内容。

我知道我可以返回 JSX,因为类似这样的工作:

test = () => 
        return (
            <h1>Hello World</h1>
        )
    

 render()
        return(
            <div>
                this.test()
            </div>
        )
     

但是当我尝试这个时,最终没有渲染到页面:

currentLocation = () => 
    return navigator.geolocation.getCurrentPosition(position => 
            return (
                <div>
                    <h1>Current Position:</h1>
                    <p>Latitude: position.coords.latitude</p>
                    <p>Longitude: position.coords.longitude</p>
                </div>
            )
        )


    render()
        return(
            <div>
                this.currentLocation()
            </div>
        )
    

【问题讨论】:

控制台是否有任何错误? 不,没有错误。 navigator.geolocation.getCurrentPosition 这一行做什么?可以分享一下它的相关代码吗 【参考方案1】:
class App extends Component 
  constructor(props) 
    super(props);
    this.state = 
      lat: null,
      lng: null,
    
  
  componentWillMount() 

    navigator.geolocation.getCurrentPosition(position => 
      this.setState( lat: position.coords.latitude, lng: position.coords.longitude );
    , err => console.log(err)
    );
  

  render() 

    return (
      <div >
        <h1>Current Position:</h1>
        <p>Latitude: this.state.lat</p>
        <p>Longitude: this.state.lng</p>
      </div>
    );
  

【讨论】:

【参考方案2】:

为我工作。

     getUserCurrentLocation = () => 
    navigator.geolocation.getCurrentPosition(
      position => 
        this.setState(state => 
          return 
            ...state,
            lat: position.coords.latitude,
            lng: position.coords.longitude
          ;
        );
      ,
      err => console.log(err)
    );
  ;

  componentWillMount() 
    // get user location
    this.getUserCurrentLocation();
  

【讨论】:

以上是关于无法在 React 中返回带有地理位置坐标的 JSX的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React Native 中获取 API 之前保存当前位置的经纬度坐标?

React JS 应用程序的浏览器中出现“用户不允许访问 Windows 位置”错误

无法从 react-native 中的 navigation.geolocation.getCurrentPosition() 返回位置

使用带有 Materialize v1.0.0 的 React.JS 无法初始化 JS

带有 React JS Div 和组件的全屏背景图像

在 utils.js 文件(React-Native)中调用异步函数?