在componentDidMount()中的两个“ then”中执行功能

时间:2019-08-02 00:25:13

标签: javascript reactjs

预期效果: 来自第一个请求的响应保存在变量check = res.data中。变量check希望将第二个请求传递给条件if (!check) {}。但是,check始终为空。我有一个错误:

  

错误:“检查”为只读

  componentDidMount() {  
    this.getTodos();
  }

  getTodos = (userId) => {
    const check = {};
    axios({
      url: "/api/v1/todos",
      method: "GET"
    })
    .then(response => {  
      check = response.data;
      if(response.data[0]) {   
        this.setState({
          todos: response.data
        });

        this.loadTodo(response.data[0].id);   
      } 
    })
    .catch(error => {
      console.log(error);
    })
    .then(() => {     
       if(!check) {
         this.loadT();
       }
    });
  }

loadTodo =  (id) => {
    const asset_id=  this.state.asset_id;
    axios({
        url: `/api/v1//load-todo/${id}`,
        method: "GET"
    })
    .then(response => {
        this.setState({
            loadTodo: response.data
        });
    })
    .catch(error => {
        console.log(error);
    })
}

1 个答案:

答案 0 :(得分:4)

您不能更改声明为constp1 = 0.14733119 > threshold的引用。

当您将变量声明为check时,您“可以”更改其属性,但不能更改变量本身。

const

因此,您可能想使用let进行声明,它具有与getTodos = (userId) => { // .? .. const check = {}; axios({ ... }) .then(response => { check = response.data; // ... rest removed for brevity } 相同的“块级”作用域,但可以重新分配。

const