reactjs - 无法读取以 React 状态存储的 json 对象
问题描述
import React from 'react';
import axios from 'axios';
class Quiz extends React.Component {
constructor(props) {
super(props);
this.state = {
showInstruction: true,
questionIndex: 0,
isLoading: true,
questions: ''
};
}
proceedHandler = () => {
this.setState({
showInstruction: false
})
}
handleQuestion = (event) => {
event.preventDefault();
console.log('show next question');
}
componentDidMount() {
console.log("After mount! Let's load data from API...");
axios({
method: "GET",
url: "/apis/questions"
}).then(response => {
console.log(response.data);
this.setState({ questions: response.data });
this.setState({ isLoading: false });
});
}
render() {
if (this.state.showInstruction) {
return (
<div>
<h1>Welcome to Quiz</h1>
<p>Quiz instructions goes here</p>
<button type="button" onClick={this.proceedHandler}>Proceed</button>
</div>
)
}
const { isLoading, questions } = this.state;
console.log(this.state['questions'][0]);
console.log(questions[0]);
if (isLoading) {
return <div className="App">Loading...</div>;
}
return (
<div>
<form onSubmit={this.handleSubmit}>
<div onChange={this.onChangeValue}>
{/* {questions[0]} */}
</div>
<button onClick={this.handleQuestion}>Next</button>
</form>
</div>
)
}
}
export default Quiz;
我的示例 API 内容如下所示。现在对存储在 Public 文件夹中的本地文件进行 api 调用。路径是public/apis/questions
。
[
{
id: 0,
question: `What is the capital of Nigeria?`,
options: [`New Delhi`, `Abuja`, `Aba`, `Onisha`],
answer: `Abuja`
},
{
id: 1,
question: `What is the capital of India?`,
options: [`Punjab`, `Awka`, `Owerri`, `Enugu`],
answer: `New Delhi`
}
]
我正在构建一个测验应用程序,上面是我的代码。我尝试从 api 获取问题并根据状态一一呈现。我正在使用 axios 来获取 componentDidMount 中的数据,我可以看到this.state.questions
问题数组已更新。但是当我这样做时questions[0]
,this.state.questions[0]
它总是返回[
。任何帮助将不胜感激,因为我对反应开发相当陌生。
解决方案
问题来自我的 API 数据。我错过了用双引号括起来的键。从 api 调用更新数据解决了我的问题。因此示例 api 数据将如下所示。
[
{
"id": 0,
"question": "What is the capital of Nigeria?",
"options": [
"New Delhi",
"Abuja",
"Aba",
"Onisha"
],
"answer": "Abuja"
},
{
"id": 1,
"question": "What is the capital of India?",
"options": [
"Punjab",
"Awka",
"Owerri",
"Enugu"
],
"answer": "New Delhi"
}
]
推荐阅读
- visual-studio-code - 如何删除 Visual Code 中的背面标签?
- javascript - Repopulating table data in Laravel Pagination using JQUERY and AJAX
- c# - 2021 年适用于 C# 的 Facebook Graph API 客户端 - 它存在吗?
- salesforce - 按参考字段 SQQL Salesforce 分组
- javascript - gltf 资产没有成为可重用的 jsx 组件
- javascript - 你如何在 Jasmine/Jest 中对独特的方法调用进行单元测试?
- javascript - 如何检查滚动是否靠近底部
- visual-studio-code - Visual Studio Code - 用于撤消单行更改的自定义命令
- javascript - KeyboardEvent.keyCode 已弃用,但变音符号呢?
- node.js - 为什么要在服务器数据库中存储 JWT 的刷新令牌?存储访问令牌会更好吗?