在本地反应中我试图使用axios.get(my_url_path)获取json数据,然后我将response.data更新为我的状态到' urldatabase'键,如果我试图调用此状态键并从json中读取数据,我得到错误:
Possible Unhandled Promise Rejection (id: 0): undefined is not an object ('prevComponentInstance._currentElement')....
我的代码如下:
}
constructor(props) {
super(props);
this.state = { userAnswer: '', count: 0, urldatabase: {} };
}
componentWillMount(){
axios.get('my_url_path')
.then(response => this.setState({urldatabase: response.data}));
}
render() {
let num = this.state.count;
console.log(this.state.urldatabase[num].book)
const book = this.state.urldatabase[num].book
return(
<RiddleHeader headerText={book} />
)
}
}
任何人都可以解释为什么我收到此错误?我做错了什么?
答案 0 :(得分:1)
考虑:在componentWillMount
中,如果axios承诺被拒绝会怎样?对:它未经处理。你需要一个catch
处理程序。承诺的基本规则:始终处理拒绝或将承诺返回给调用者。在这种情况下,如果您从componentWillMount
返回承诺,则React不会对其执行任何操作,您需要在componentWillMount
内处理错误。
答案 1 :(得分:0)
重新尝试这样的代码并检查它是否再次发生。
} constructor(props) {
super(props);
this.state = { userAnswer: '', count: 0, urldatabase: {} }; }
componentWillMount(){
axios.get('my_url_path')
.then(response => this.setState({urldatabase: response.data})); } render() {
let num = this.state.count;
console.log(this.state.urldatabase[num].book)
const book = this.state.urldatabase[num] && this.state.urldatabase[num].book; // this code can avoid undefined error
return(
<RiddleHeader headerText={book} /> ) } }