显示第一个数组元素 - ReactJS

弗雷德

我正在使用 React / Typescript 开发一个测验应用程序以进行学习。

我有一个叫做测验的状态,它包括:

interface QuestionData {
  id: number;
  question: string;
  explanation: string;
  options: OptionsData;
}

我只想在屏幕上显示数组的第一个元素,我知道这样做的方法是:

<p>{quiz[0].question}</p>

但是,通过这种方式,我收到以下错误:

TypeError: Cannot read property 'question' of undefined

如果我使用 console.log 打印(quiz[0].question),我会得到想要的回报。有没有其他办法?或者我认为正确的形式不是吗?

完整代码如下:

interface VideoInfo {
  video_id: number;
}

type OptionsData = any[];

interface QuestionData {
  id: number;
  question: string;
  explanation: string;
  options: OptionsData;
}

const Quiz: React.FC<VideoInfo> = video_id => {
  const [quiz, setQuiz] = useState<QuestionData[]>([]);

  const video = video_id;

  const getQuiz = useCallback(async () => {
    try {
      await api.get(`/quiz/video/${video}`).then(response => {
        setQuiz(response.data);
      });
    } catch (err) {
      alert('error');
    }
  }, [video]);

  useEffect(() => {
    getQuiz();
  }, [getQuiz]);

  return (
    <Container>
      <ol>
        <li>
          <div className="question">
            {/* The error happens here: */}
            <p>{quiz[0].question}</p>
            <div>
              <Button type="button">A</Button>
              <Button type="button">B</Button>
              <Button type="button">C</Button>
              <Button type="button">D</Button>
            </div>
          </div>
        </li>
      </ol>
    </Container>
  );
};

export default Quiz;
齐雷克

当您尝试访问 quiz[0] 时,该元素尚不存在。尝试做这样的事情:

{quiz && quiz[0].question}

{quiz[0]?.question}

这样您就可以在尝试访问元素之前检查元素是否存在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 ReactJs 中仅打印 JSON 数组中的第一个元素?

如何在reactjs中返回数组的第一个对象

ReactJs 输入第一个值变空

ReactJS钩子用另一个数组更新一个数组

检查第二个数组是否包含第一个数组的元素,然后显示

显示数组第一个元素的图

Vue:Filter返回一个数组,如何获取第一个元素

需要一个数组,其中新数组的第一个元素=除第一个元素以外的所有元素的和

数组第一个元素

ReactJS响应式布局对第一个网格无响应

在哪里放置应运行第一个ReactJs + Mobx状态树的代码

哪个在reactjs中呈现第一个孩子或父母

reactjs 输入 onChange switchRoute 但丢失了第一个字符

ReactJS使用Ajax根据第一个下拉列表选择的值填充下拉列表

运行reactjs第一个代码后如何修复错误

通过第一个数组的元素连接两个 numpy 数组

映射Javascript中数组数组中每个数组的第一个元素

从列表中创建一个数组,其中数组的第一个元素是列表中的第一个元素

使用jq显示第一个数组中所有元素的第二个数组

ReactJS:我有一个单击处理程序,正在跳过第一个props方法

使用Lodash获取数组中每个数组的第一个元素

选择整数数组的每个数组的第一个元素

我在reactjs中有一个秒表,如何将每个数字添加到某种数组中以显示每个数字?

对 ReactJs 中另一个数组中的数组进行排序

如何将数组输入到另一个数组 reactjs

遍历2个数组仅循环第一个元素

foreach中的数组仅显示第一个数组

js/reactjs - 我如何从两个来源构造一个数组?

显示每个数组的第一个和第三个值