Как вызвать API, используя поток в React нативный, используя Redux? - PullRequest
0 голосов
/ 21 января 2020

как вызвать фоновый поток в реакции на native.creating приложения, используя фоновый поток для вызова 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 с использованием потока?

Ответы [ 2 ]

0 голосов
/ 21 января 2020

Существует Reaction-native-Threads , который является самым близким к многопоточности доступным на данный момент. См. , почему Javascript не поддерживает многопоточность .

То, что вы пытаетесь достичь, на самом деле довольно распространено и достигается общими библиотеками, Javascript выполняет код параллельно, а не параллельно, что не будет иметь значения, если вы не будете загружать процессор.

Вот фрагмент кода, который будет работать из коробки в React Native. Примечание fetch здесь - глобальная переменная. React Native docs - отличное место для начала работы.

function getMoviesFromApiAsync() {
  return fetch('https://facebook.github.io/react-native/movies.json')
    .then((response) => response.json())
    .then((responseJson) => {
      return responseJson.movies;
    })
    .catch((error) => {
      console.error(error);
    });
}
0 голосов
/ 21 января 2020

Многопоточность не поддерживается в React-native. Таким образом, для вызова API вы можете использовать избыточный код, который отправляет действие, которое, в свою очередь, вызывает Api через ax ios. Так что либо по методике редукса, либо вы можете использовать для этого простую библиотеку ax ios.

Я бы предложил вам использовать ax ios, поскольку она будет аккуратной, вы можете просто сделать это:

import axios from './axiosWrapper';

export const getItineryRequest = async tripId => {
  const params = {
    packageId: '26169',
    packageId: tripId,
    ip: 'true',
  };
  return await axios.get('app/user-package-details/', {params});
};

Где axios.get - запрос на получение. Надеюсь, поможет. не стесняйтесь сомнений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...