react组件中的onDeviceReady事件侦听器

时间:2018-08-08 05:57:49

标签: reactjs cordova cordova-plugins react-dom

在我的react应用中,我试图使用Cordova插件(cordovo-plugin-device)来获取用户的设备版本,如下所示

class LogoHeader extends React.Component {
  componentDidMount () {
    window.addEventListener('deviceready', this.onDeviceReady)
  }
  onDeviceReady () {
    console.log(device.cordova)
  }
  render () {
    ...
  }
}

但是由于某些原因,deviceready事件永远不会触发。我想念什么吗?有没有更好的方法来监听DOM事件中的事件?

1 个答案:

答案 0 :(得分:2)

根据Cordova docsthis SO answer,您应该在条目文件中添加侦听器(可能是index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

const startApp = () => {
    console.log(device.cordova)
    ReactDOM.render(
      <App />,
      document.getElementById('root')
    );
}

if(!window.cordova) {
  startApp()
} else {
  document.addEventListener('deviceready', startApp, false)
}

您也可以将device.cordova作为道具传递给App,以便可以在其他组件中访问它。

...
ReactDOM.render(
      <App device={device
         ? device.cordova
         : null}/>,
      document.getElementById('root')
    );
...