因此,我正在开发一种测验应用程序,因此this是应用程序首次启动时的初始状态,我还拥有quizApplication.js组件来存储所有问题和答案,

{
   question: "I am task oriented in order to achieve certain goals",
   answers: [
      {
        type: "Brown,D,JP",
        content: "Hell Ya!"
      },
      {
        type: " ",
        content: "Nah"
      }
    ]
 },

这是我设置用户答案的​​功能
setUserAnswer(answer) {
if (answer.trim()) {
  const answer_array = answer.split(',');
  const updatedAnswersCount = update(this.state.answersCount, {
    [answer]: {$apply: (currentValue) => currentValue + 1},
  });
  this.setState({
    answersCount: updatedAnswersCount,
    answer: answer
  });
 }
}

我也有这样的AnswerOption组件
function AnswerOption(props) {
 return (
   <AnswerOptionLi>
    <Input
     checked={props.answerType === props.answer}
     id={props.answerType}
     value={props.answerType}
     disabled={props.answer}
     onChange={props.onAnswerSelected}
   />
    <Label className="radioCustomLabel" htmlFor={props.answerType}>
     {props.answerContent}
    </Label>
   </AnswerOptionLi>
  );
 }

因此,我试图做的是,每当用户单击HellYa时!它将使“Brown”,“D”和“JP”增加+1,但是现在它给了我一个新的AnswerCount值,如Brown,D,JP:null,那么我应该如何实现呢?非常感谢!

最佳答案

您已分割type,但尚未使用它们。

分割type后,您将获得answer_array,其长度为3,其中包含["Brown", "D", "JP"]

const answer_array = answer.split(',');

接下来,您将使用更新的答案计数来更新状态。您正在执行以下
const updatedAnswersCount = update(this.state.answersCount, {
 [answer]: {$apply: (currentValue) => currentValue + 1},
});

此处answer包含"Brown,D,JP"。由于您想通过+1更新每个值,因此让我们遍历拆分值并进行更新。
let updatedAnswersCount = null;

answer_array.forEach((key) => {
 updatedAnswersCount = update(this.state.answersCount, {
  [answer]: {$apply: (currentValue) => currentValue + 1},
 });
}

在这里,我假设您的类型是唯一的。含义Brown / D / JP仅针对此答案存在,而对于其他任何内容均不存在。因此,我们假设所有值都相同。

关于javascript - 在javascript,reactjs中分割字串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46570887/

10-10 07:14