Реагируйте, как визуализировать асинхронные данные из API? - PullRequest
0 голосов
/ 30 июня 2018

Я использую preact (облегченная версия реакции), но синтаксис почти такой же. У меня проблема с подтверждением после установки состояния из результата обещания. Это мой контейнерный компонент:

import { h, Component } from "preact";
import { VerifierService } from "services/verifierService";
var CONFIG = require("Config");

//import * as styles from './profile.css';

interface PassportProps { token?: string; path?: string }
interface PassportState { appId?: string; verified?: boolean }

export default class Passport extends Component<PassportProps, PassportState> {
  constructor(props) {
    super(props);

    this.state = { appId: CONFIG.Settings.AppId };
  }

  async componentDidMount() {
    console.log("cdm: " + this.props.token);

    if (this.props.token != undefined) {
      await VerifierService.post({ token: this.props.token })
        .then(data => {
          this.setState({ verified: data.result });
          console.log(JSON.stringify(data, null, 4));
        })
        .catch(error => console.log(error));
    }
  }

  render() {
    return <div>Test: {this.state.verified}</div>;
  }
}

Я могу видеть console.log как истинное внутри результата обещания, но не могу отобразить его в поле зрения.

1 Ответ

0 голосов
/ 30 июня 2018

Ваш data в вашем console.log равен true, поэтому data.result даст вам undefined. Попробуйте просто установить data в setState.

await VerifierService.post({ token: this.props.token })
  .then(data => {
    this.setState({ verified: data });
    console.log(JSON.stringify(data, null, 4));
  })
  .catch(error => console.log(error));
...