javascript - TypeError:无法读取未定义的属性“问题”
问题描述
我想显示从本地 .json 文件中获取的信息,并使用以下 Javascript 函数将信息呈现到我的 HTML 中。即使已经定义了 const 答案,控制台也会抛出错误。我将其注释掉只是为了看看函数的其余部分是否有效,并且我也得到了相同的 TypeError 问题。
下面是在 React 中,Questions.json 被导入到我的 Play.js 页面中:
import React, { Fragment } from 'react';
import { Helmet } from 'react-helmet';
import questions from '../../questions.json';
import isEmpty from '../../utils/is-empty';
class Play extends React.Component {
constructor(props) {
super(props);
this.state = {
questions,
currentQuestion: {},
nextQuestion: {},
previousQuestion: {},
answer:'',
numberofQuestions: 0,
numberOfAnsweredQuestion: 0,
score: 0,
correctAnswers: 0,
wrongAnswers: 0,
hints: 5,
fiftyFifty: 2,
usedFiftyFifty: false,
time: {}
};
}
componentDidMount () {
const {questions, currentQuestion, nextQuestion,previousQuestion} = this.state;
this.displayQuestions(questions,currentQuestion,nextQuestion,previousQuestion);
}
displayQuestions = (questions = this.state.questions, currentQuestion, nextQuestion, previousQuestion) => {
let { currentQuestionIndex } = this.state;
if (!isEmpty(this.state.questions)) {
questions = this.state.questions;
currentQuestion = questions[currentQuestionIndex]
nextQuestion = questions[currentQuestionIndex + 1];
previousQuestion = questions[currentQuestionIndex - 1];
const answer = currentQuestion.answer;
this.setState({
currentQuestion,
nextQuestion,
previousQuestion,
answer
});
}
};
这是在渲染下显示动态文本的 HTML 的一部分。
<h5>{currentQuestion.question}</h5>
<div className="options-container">
<p className="option">{currentQuestion.optionA}</p>
<p className="option">{currentQuestion.optionB}</p>
</div>
<div className="options-container">
<p className="option">{currentQuestion.optionC}</p>
<p className="option">{currentQuestion.optionD}</p>
</div>
解决方案
在您的displayQuestions(questions=questions,..)
功能中,不要使用questions
. 使用不同的变量名,例如(awesome=questions)
.
推荐阅读
- r - 删除特定变量中没有符号更改的键的所有行
- react-native - 附加模块连接错误
- scheme - SICP 练习 1.28 - Miller-Rabin - “至少有一半的数字将显示 1 模 n 的非平凡平方根”
- c# - 如何使用 WebClient() 从 json 获取所有结果?
- c++ - 混合别名和模板特化
- java - 增加表格布局Android Studio中的列
- html - 如何在特定屏幕宽度下删除属性
- python - 在 Heroku 上部署后文件未加载。在 localhost 和 heroku 本地网络上运行良好
- mysql - 数据库连接中断时不释放 FOR UPDATE 锁
- selenium-webdriver - 当我尝试使用 Selenium 启动 chrome 浏览器时,“驱动程序不可执行”