2016-07-13 15 views
22

zacząłem programowania w React Native i przyzwyczaiłem użyć składni:Czy można korzystać z asynchronizacji/oczekiwać w React JS?

async myFunction(){ 
    ... 
    return await otherFunction(); 
} 

Ale nie wiem jak zrobić to zgodne z React React Native JS i we wspólnym opakowaniu. Jak mogę to zrobić, aby działał na obu platformach?

Dzięki!

+0

Czy obejrzysz AsyncStorage w reakcji rodzimych dokumentów urzędowych? (edytuj: właśnie zauważyłem, że to jest pytane miesiące temu) – eden

+0

@EnieJakiro Nie wiem jak AsyncStorage jest związany z pytaniem. Używam AsyncStorage, ale tylko dla React Native. –

Odpowiedz

16

Reaguj Natywne statki z Babel i niektórymi ustawieniami Babel, natomiast Reaguj w sieci to po prostu React powiązany kod.

Jeśli chcesz użyć async/czekają dzisiaj w internecie musisz Babel i poprawnych przekształceń: https://babeljs.io/docs/plugins/transform-async-to-generator/

lub stadium-1 presety, które jest dość powszechne w React apps dzisiaj. http://babeljs.io/docs/plugins/preset-stage-1/

+0

Dziękujemy za odpowiedź @ azium. Zainstalowałem oba i po uruchomieniu "npm run dev" pojawia się błąd "Nieoczekiwany token" dla funkcji asynchronicznej –

+0

Będziesz musiał pokazać więcej o swoim projekcie, aby zdiagnozować .. możesz opublikować package.json i webpack. pliki config.js? – azium

+0

Na końcu transformacja asynchronizacji do generatora działa dobrze w przypadku React, dzięki @Azium –

27

Jeśli budynku za tworzenie reagują aplikacji minęło dostępny od v0.2.3

https://github.com/facebookincubator/create-react-app/releases/tag/v0.2.3

Może być używany wewnątrz komponentu jak ten

class App extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { message: '' }; 
    } 

    async componentDidMount() { 
    this.setState({ message: 'loading...' }); 
    let d = await getData('/posts/1'); 
    this.setState({ message: d }); 
    } 

    render() { 
    let { message } = this.state; 
    return (
     <div className="App"> 
     <p className="App-intro"> 
      { message } 
     </p> 
     </div> 
    ); 
    } 
} 

Apostolskiej:

https://github.com/facebookincubator/create-react-app/issues/1024

+0

To naprawdę dobra wskazówka. Nie wiedziałem w ten sposób o budowaniu aplikacji. Dziękuję Ci! –

+0

Tim, jakie jest użycie asynchronizacji metody componentDidMount? –

+0

@jamesemanon nie wiem, o co pytasz. –

2

Można również użyć Typescript.

Od wersji 2.1 możliwe jest użycie async/await i bezpośrednio transpile to ES5 (innymi słowy nie działać na wszystkich przeglądarkach) ~

Powiązane problemy