我在从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/