Reactjs 意外标记,应为“预期”&引用;在渲染时()

Reactjs 意外标记,应为“预期”&引用;在渲染时(),reactjs,Reactjs,正如我的代码标题中所述,我在第145行遇到了这个错误,但我无法真正将错误追溯到它的源代码,因为它指向了一个对我来说正常的部分。下面是错误和我的代码: 从“React”导入React; 从“react dom”导入react dom; //从“道具类型”导入道具类型; 从“../../../Widget/Popup”导入弹出窗口; 从“../../../api”导入api; //从“../../../TokenContext”导入TokenContext; 从“../../UserBar”导入用

正如我的代码标题中所述,我在第145行遇到了这个错误,但我无法真正将错误追溯到它的源代码,因为它指向了一个对我来说正常的部分。下面是错误和我的代码:

从“React”导入React;
从“react dom”导入react dom;
//从“道具类型”导入道具类型;
从“../../../Widget/Popup”导入弹出窗口;
从“../../../api”导入api;
//从“../../../TokenContext”导入TokenContext;
从“../../UserBar”导入用户栏;
导出默认类问题扩展React.Component{
建造师(道具){
超级(道具);
此.state={
/*如果我们正在编辑一个已存在的问题
我们将在'componentdidmount'中更新这些统计信息`
否则,我们将提出一个新问题
*/
问题名称:“”,
问题类型:“”,
时限:0,
分数:0,,
视频:'',
照片:'',
//标记切换以显示用户连接youtube url的输入栏
showInput:false,
//这个问题的答案
答复:[],
//这个问题可能有1个以上的正确答案
//在多类型问题中
正确答案:[],
//跟踪用户要添加的答案
newAnswerInput:“”,
};
}
componentDidMount=async()=>{
const{token}=this.state;
const{match}=this.props;
console.log(令牌);
const quizId=match.params[0];
const questionIndex=match.params[1];
const path=`admin/quick/${quizId}`;
const response=await api(路径'GET',null,令牌);
如果(response.status==200){
const r=await response.json();
如果(问题索引){
这个.setState({
[event.target.name]:event.target.value
});
}
//将文件存储到状态的单独处理程序
//因为我们使用target.files[0]检索文件
上载文件=(事件)=>{
this.setState({photo:event.target.files[0]});
}
toggleInput=(状态)=>{
this.setState({showInput:!state.showInput});
}
renderThumbnail=()=>{
const{video,photo}=this.state;
如果(视频!=''){
返回(
);
返回();
}
时间限制=()=>{
时间=[5,10,20,30,60,90,120,240];
timespoptions=times.map((t)=>(
{t}
));
返回时间选项;
}
addAnswer=()=>{
const{newAnswerInput,answers}=this.state;
如果(新应答输入!=''){
这个.setState({
答案:[答案,新答案输入],
newAnswerInput:“”,
});
}
}
//在状态中修改正确答案列表的处理程序
changeCorrectAnswer=(事件)=>{
const{correctAnswers}=this.state;
var newCorrectAnswers=[…correctAnswers];
//以下代码改编自
// https://stackoverflow.com/questions/36326612/delete-item-from-state-array-in-react
if(newCorrectAnswers.includes(event.target.name)){
var index=array.indexOf(event.target.name);
接头(索引1);
}否则{
newCorrectAnswers.push(事件、目标、名称);
}
this.setState({correctAnswers:newCorrectAnswers});
}
updateQuestion=async()=>{
const{token}=this.state;
const{match,history}=this.props;
console.log(令牌);
const quizId=match.params[0];
const questionIndex=match.params[1];
const path=`admin/quick/${quizId}`;
var response=await-api(路径'GET',null,令牌);
如果(response.status==200){
//使用新问题信息执行更新api请求
const r=await response.json();
const newQuestion={…this.state};
r、 问题=[…r.问题,新问题];
响应=等待api(路径'PUT',r,令牌);
//如果我们成功更新了新问题,将导航到上一页
如果(response.status==200){
goBack();
}否则{
const r=await response.json();
常量弹出=;
render(弹出窗口,document.getElementById('popup');
}
}否则{
const r=await response.json();
常量弹出=;
render(弹出窗口,document.getElementById('popup');
}
}
render(){
const{answers,correctAnswers}=this.state;
返回(
{this.renderThumbnail}
上传视频
{showInput
&& (
贴上
)}
上传你的文件
问题类型
单一的

玩家只能选择其中一个答案 多种
玩家可以在提交前选择多个答案 时限 {this.timeLimitOptions} 要点 0 1000 2000 //下面的代码是改编自 // https://www.pluralsight.com/guides/implementing-radio-list-with-text-input-in-reactjs {answers.map((answer)=>( {答案} ))} this.setState({newAnswerInput:e.target.value}) /> 添加答案 ); }
}
您需要检查所有函数和声明是否正确打开和关闭括号

您在渲染缩略图函数中错过了一个}

你目前的职能

re