【发布时间】:2020-05-07 05:15:48
【问题描述】:
如何在 react native 中调用后台线程。使用后台线程创建应用程序来调用 API。建议我实现这一目标。
import React, { Component } from 'react'
import { WebView } from 'react-native'
export default class BackgroundTaskRunner extends Component {
render() {
return (
<WebView
ref={el => this.webView = el}
source={{html: '<html><body></body></html>'}}
onMessage={this.handleMessage}
/>
)
}
runJSInBackground (code) {
this.webView.injectJavaScript(code)
}
handleMessage = (e) => {
const message = e.nativeEvent.data
console.log('message from webview:', message)
}
}
这是调用后台线程的方式还是有更好的方式来使用线程执行 API 调用?
【问题讨论】:
-
请分享您尝试过的代码
-
react-native 不支持多线程,所以我认为最好的方法是使用 redux 并调度一个动作
-
好的,我没有尝试过,所以请提供代码片段的想法会有所帮助
-
你应该先用你自己对这个问题的假设来尝试,先尝试你的假设来测试你的知识,如果你所有的努力都没有采取任何行动,然后发布寻求帮助。只有这样学习才能提高你。
-
顺便说一句,ReactNative 应用程序使用 JS 实现,因此 ReactNative 中没有多线程。您必须了解 JS 中的异步,利用 redux、redux-saga 来处理您的应用程序状态、调用 API 并存储到状态中。如果您想获得多处理的好处,请尝试使用 Swift (iOS)、Java (Android) 编写本机库,然后将其集成到您的应用程序中
标签: reactjs api react-native react-redux react-router