javascript - 在react条件返回中使用API​​ JSON数据

标签 javascript reactjs express

我有一个小型(从未用于生产)Express/React 应用程序,我正在验证 Express 中的散列 pin 并返回 message: false如果验证失败或 message: <cardnumber>如果验证成功。在我的 react 前端中,如果它返回卡号,我希望最终重定向,但首先我只是尝试有条件地渲染组件。

我有一个 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);
      }
    );
  };

然后我尝试在我的 react 返回中有条件地渲染 Material ui 组件

 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

最佳答案

在这里重新发布我的评论,以便解决问题。

状态属性servercardnumber应设置为json.message而不是json.cardnumber

关于javascript - 在react条件返回中使用API​​ JSON数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53132510/

相关文章:

javascript - Angular.uppercase() 不是 Angular 1.6 中的函数

javascript - 在 React 中,如何返回 JSX 以及返回更多 JSX 的 JS 函数?

javascript - 如何最好地创建选项卡式内容组件、文件夹、方法结构

javascript - 在node.js中使用for循环?

javascript - Node.js socket.io 为单个事件返回多个值

javascript - 在 "let"中转换 C# DateTime?

javascript - 我有一些元素。基于这两个数据点,我需要查询那些项目

javascript - 刷新页面后Angular 4 Reactive Form启用字段

javascript - 来自 React Hook 内部的变量 useEffect 将在每次渲染后丢失

node.js - 使用 Express 对 Sequelize finder 进行后处理