【问题标题】:setState return NULL in React and Node Js [duplicate]setState 在 React 和 Node Js 中返回 NULL [重复]
【发布时间】:2020-08-23 02:04:48
【问题描述】:

我有一个 Node Js API,我可以在其中使用 find 函数获取我的数据库数据。它完美地工作并发送我的结果。 使用 React 和 Axios,我得到了数据,但只要我将数据传递到 setState,它就会发送 null

这是我的 API find() 函数

dbo.collection("students").find({}).toArray(function(err, result) {
        if (err) throw err;
        var students = result;
        reponse.send(students);
        db.close();
    });

这是我的 Axios constructor()componentDidMont()

    constructor() {
    super();
    this.state = {
      students: [],
    }
  }

    componentDidMount() {
    axios.get("http://localhost:3333/").then((data) => {
      console.log(data);
      this.setState({students:data.data.students});
      console.log(this.state);
    });
  }

console.log(data)返回这个

`Object { data: (33) […], status: 200, statusText: "OK", headers: {…}, config: {…}, request: XMLHttpRequest }`

console.log(this.state) 则返回此

Object { students: undefined }

【问题讨论】:

  • 你确定你的data.data中有students吗?

标签: javascript node.js reactjs api axios


【解决方案1】:

首先,状态更新是异步的,因此您不会立即看到更新后的状态

其次,响应数据是一个数组的数据,所以你只需要用data.data设置状态

this.setState({students:data.data});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-19
    • 2020-06-17
    • 1970-01-01
    • 2018-05-12
    • 2021-07-28
    • 2017-09-24
    • 2019-12-13
    • 2021-06-24
    相关资源
    最近更新 更多