gpt4 book ai didi

javascript - ReactJs 组件在 cordovas onDeviceReady 函数之前呈现

转载 作者:搜寻专家 更新时间:2023-11-01 04:40:41 24 4
gpt4 key购买 nike

我目前正在试验 React JS (v.0.14) 和 cordova。我想使用 cordova 文件插件从 Android 模拟器的 sdcard 中读取一些文件。

当我尝试启动该应用程序时,我总是遇到错误,即 cordova.file.* 未定义。发生这种情况是因为,React 组件是在调用 cordova onDeviceReady 之前呈现的。我在 onDeviceReady 函数中添加了 ReactDOM.render 函数,但这不起作用。

应用程序.js

var app = {
initialize: function() {
this.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
console.log('on ready'); // Update DOM on a Received Event

ReactDOM.render(
<App />,
document.getElementById('app')
);
}
};
app.initialize();

var App = React.createClass({
getInitialState: function() {
return {tiles:[]};
},

componentDidMount: function() {
var PATH = cordova.file.externalRootDirectory + 'testdir/'; //Is called before onDeviceReady

},

render: function() {
return (
<div>
<Navigation title="Dashboard"/>
<Dashboard tiles={this.state.tiles}/>
</div>
);
}
});

index.html:

<body>
<!-- fixed top navbar -->
<div id="app">

</div>
<!-- Dashboard -->

<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="bower_components/react/react.js"></script>
<script type="text/javascript" src="bower_components/react/react-dom.js"></script>
<script type="text/javascript" src="js/browser.min.js"></script>
<script type="text/babel" src="js/app.js"></script>
</body>

控制台的错误信息是:

Uncaught TypeError: Cannot read property 'externalRootDirectory' of undefined ...
on ready

如何在 onDeviceReady 之后或之中加载我的 React 组件?

谢谢和问候,迈贝克

最佳答案

就我而言,我正在等待设备信息。

看看这个链接 here也是。

点击此链接,我想出了这段代码:

function initApp () {
ReactDOM.render(<App />, document.getElementById('root'));
};

if (window.cordova) {
document.addEventListener("deviceready", () => {
initApp();
}, false);
} else {
initApp();
}

关于javascript - ReactJs 组件在 cordovas onDeviceReady 函数之前呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33572597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com