我在从API响应获取数据设置状态时遇到问题

render() {
    function getCode(text) {
      fetch('url', {
        method: 'POST',
        headers: {
          Accept: 'application/json',
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          "telephone": text,
          "password": "123123"
        })
      }).then(response => response.json())
      .then(response => {
        console.log(this.state.text)
        console.log(this.state.uid)

        this.setState({uid : response["data"]["telephone"]})
        console.log(this.state.uid)
      // this.setState({uid: response["data"]["telephone"]})
      // console.log(this.state.uid);
    })
  }


这是我的构造函数

constructor(props) {
   super(props);
   this.state = {
      text: '',
      uid: ''
   }
}


所以我只是发送一个请求,并且需要在状态内保存响应,但是,我收到了一个错误:


  TypeError:未定义不是对象(正在评估
  '_this2.state.text')]


被注释的代码行是我修复它的尝试。

UPD 1:
这是APi的回复

{"data":{"telephone":["Some data"]}}

最佳答案

当组件确实挂载在render函数中时,您声明该函数

 class Something extends React.Component {
  constructor(props) {
      super(props);
      this.state = {
        text: '',
        uid: ''
      }
  }

   getCode = (text) => {
      fetch('url', {
        method: 'POST',
        headers: {
          Accept: 'application/json',
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          "telephone": text,
          "password": "123123"
        })
      }).then(response => response.json())
      .then(response => {
        console.log(this.state.text)
        console.log(this.state.uid)

        this.setState({uid : response.data.telephone})
        console.log(this.state.uid)
      // this.setState({uid: response["data"]["telephone"]})
      // console.log(this.state.uid);
      })
  }

  render() {
    return(
      //...you can call it this.getCode(/..../)
    )
  }

}

关于javascript - 未定义不是对象 native ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54845134/

10-09 14:47