如何解决在Map reactJS中使用if语句时出错
我是ReactJS的新手。我正在实现一个测验页面,用户可以在其中回答问题,一旦提交答案,就会显示结果。以下是 DisplayResult 组件,该组件可计算分数并显示结果。我在if语句中遇到错误。多次检查语法,不确定是语法问题还是缺少什么。你能帮忙吗?
import React from "react";
function DisplayResult(props) {
var score=0;
var Answers=[1947,1950];
props.data.map((dat,i) =>
({if (dat===Answers[i]) {score++}}
));
return<div>Your answers are {props.data[0]},{props.data[1]} and your score is {score} </div>;
}
export default DisplayResult;
以下是我遇到的错误: ./src/DisplayResult.jsx 第8:14行:解析错误:意外的令牌,预期为“,”
6 | var Answers = [1947,1950]; 7 | props.data.map((dat,i)=>
8 | ({if(dat === Answers [i]){score ++}} | ^ 9 | )); 10 | return您的答案是{props.data [0]},{props.data [1]},而您的分数是{score};
解决方法
使用forEach
循环而不是.map
。
顺便说一句,您需要关注React
的基础知识。
尝试阅读有关YouTube的基本教程。
const Answers = [1947,1950];
function DisplayResult(props) {
let score = 0;
props.data.forEach((data,i) => {
if (data === Answers[i]) {
score += 1;
}
});
return (
<div>
Your answers are {props.data[0]},{props.data[1]} and your score is{" "}
{score}{" "}
</div>
);
}
,
您的地图上有一个额外的括号,它应该像这样:
props.data.map((dat,i) => {
if (dat === Answers[i]) {
score++
}
})
您应该使用forEach而不是映射,因为您假设在映射中具有返回值,而不是这里。在此处查看文档:{{3}}
,您不应该使用括号并使用括号内的花括号,似乎您已经习惯了条件渲染符号:
props.data.map((dat,i) =>
(
{if (dat===Answers[i]) {score++}}
)
);
改写这个:
props.data.map((dat,i) =>
{
if (dat===Answers[i]) {score++}
}
);
,
使用foreach而不是map,因为您什么都不返回。然后,您将所有if语句包装在()内,这意味着map方法试图返回整个事件并抛出错误。
props.data.forEach((dat,i) => {
if (dat === Answers[i]) {
score++
}
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。