在this.state中存储对象数组后,我尝试访问对象中的值,如array[random.somevalue
,但它显示错误array[random]is undefined
。 但它适用于array[random]
返回一个对象。 为什么我不能访问那个对象里面的值。。。?
class Quiz extends Component {
constructor(props) {
super(props);
this.state = {
data: undefined,
q_no: 0,
rand_q: {},
opts: []
}
this.newQuestion = this.newQuestion.bind(this);
}
componentDidMount() {
if(this.state.data === undefined) {
fetch("http://restcountries.eu/rest/v2/all")
.then(data => data.json())
.then(data => this.setState({data: [data.map((val) => ({name: val.name, flag: val.flag}))]}))
.then(() => console.log(this.state.data));
}
}
newQuestion() {
const state = this.state;
const rand = Math.floor(Math.random() * 200);
this.setState({rand_q: {name: state.data[rand].name, flag: state.data[rand].flag}, opts: [state[rand-1].name, state[rand+1].name, state[rand+2].name]});
}
TypeError: state.data[rand] is undefined
newQuestion
src/Quiz.js:30
27 | newQuestion() {
28 | const state = this.state;
29 | const rand = Math.floor(Math.random() * 200);
> 30 | this.setState({rand_q: {name: state.data[rand].name, flag: state.data[rand].flag}, opts: [state[rand-1].name, state[rand+1].name, state[rand+2].name]});
| ^ 31 | }
32 |
33 | render() {
请帮帮我。。。
您的构造函数是在ComponentDidMount
之前调用的,因此没有可用的State.Data
(因为您将其设置为Undefined
)。
您必须将NewQuestion
调用移动到render函数或ComponentDidUpdate