使用反应钩子实现先前的问题逻辑

时间:2021-03-09 16:13:11

标签: javascript reactjs react-hooks

我正在制作一个非常简单的反应测验应用程序,您可以在其中通过“下一步”按钮从一个问题转到另一个问题。每次单击下一个按钮时,useState 钩子(作为道具传递给 onAnswerUpdate)将带有问题标题和所选答案的对象推送到名为“answers”的数组:

const nextClickHandler = (e) => {
    if(selected === '') {
      return setError('Please select one option');
    }
    onAnswerUpdate(prevState => [...prevState, { q: data.question, a: selected }]);
    setSelected('');
    if(activeQuestion < numberOfQuestions - 1) {
      onSetActiveQuestion(activeQuestion + 1);
    }else ...
  }

我实现了一个基本的上一个按钮逻辑,其唯一功能是返回上一个问题,但是当我将答案更改为已回答的问题时,我努力寻找一种方法来替换与正确问题对应的答案数组中的对象.我尝试使用 activeQuestion 编号作为数组的索引(如下面的代码示例中所示)和 splice 方法来替换它,但它们都不起作用。任何帮助将不胜感激。

const nextClickHandler = (e) => {
      if(selected === '') {
        return setError('Please select one option');
      }
      onAnswerUpdate(prevState => [...prevState, answers[activeQuestion] = { q: data.question, a: selected }]);
      setSelected('');
      if(activeQuestion < numberOfQuestions - 1) {
        onSetActiveQuestion(activeQuestion + 1);
      } else ...

1 个答案:

答案 0 :(得分:0)

使用 server is listening on port 3000 request {} 和数组挂钩总是让我发疯......我更喜欢使用更简单的方法。如果您需要替换处于状态的数组中的元素,您可以这样写:

prevState