Использование данных API JSON в условном возвращении - PullRequest
0 голосов
/ 03 ноября 2018

У меня небольшое (никогда не для производства) приложение Express / React, я проверяю хешированный пин-код в экспрессе и возвращаю либо message: false, если проверка не пройдена, либо message: <cardnumber>, если проверка прошла успешно. В моем интерфейсе реакции я хочу в конечном итоге перенаправить, если он возвращает номер карты, но сначала я просто пытаюсь условно отобразить компонент.

У меня есть конструктор для ответа json

constructor() {
    super();
    this.state = {
      cardnumber: '',
      pin: '',
      servercardnumber: {
        message: ''
      }
    };

Затем я получаю данные из API следующим образом

  const url = '/api/login';
    const serverResponse = await fetch(url, {
      method: 'POST',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Credentials': true
      },
      body: JSON.stringify(data)
    });
    const json = await serverResponse.json();
    console.log(json);

    this.setState(
      prevState => {
        return {
          servercardnumber: json.cardnumber
        };
      },
      () => {
        console.log(this.state.cardnumber);
      }
    );
  };

Затем я пытаюсь условно визуализировать компонент пользовательского интерфейса в моем ответном ответе

 render() {
    const { cardnumber, pin, servercardnumber } = this.state;
    return (
      <React.Fragment>
        <Card>{!servercardnumber ? <Card> Server says no</Card> : null}</Card>
        {console.log('server says:')}
        {console.log(servercardnumber)}

{console.log(servercardnumber)} сначала возвращает правильный номер карты сервера, а затем возвращает неопределенное значение.

Мне нужно увидеть ответ в моем условном рендеринге и показать визуализированный компонент, если вход выполнен успешно (или показать, если не успешно, если я получу его для условного рендеринга)

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

Полный код переднего конца для соответствующего файла: https://pastebin.com/VbdzmE4E Код сервера для соответствующего файла: https://pastebin.com/TZ35NZxa

1 Ответ

0 голосов
/ 03 ноября 2018

Повторно разместив здесь мой комментарий, можно решить вопрос.

Свойство состояния servercardnumber должно быть установлено на json.message вместо json.cardnumber.

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