React 有条件地渲染一个 div

迈克尔

我正在尝试向我的测验应用程序添加提示选项。如果单击 50/50 按钮,我想呈现 newAnswers 数组。否则我想渲染 shuffledAnswers 数组。

当我运行此代码时,我得到

TypeError:无法读取 null 的属性(读取“useState”)

我在这里做错了什么?

import React from "react";
import { useState } from "react/cjs/react.production.min";
import Card from "../UI/Card";
import "./DisplayQuestion.css";
import ProgressBar from "./Progress";

const DisplayQuestion = (props) => {
  /*I used dangerouslySetInnerHTML to fix the quotes gibberish problem */
  const [hint, setHint] = useState(false);
  console.log("hint: ", hint);
  let notBoolean = false;
  const newAnswers = [
    props.data.correct_answer,
    props.data.incorrect_answers[0],
  ];

  /*Helper functions */

  // shuffles the answers
  let shuffledAnswers = [
    props.data.correct_answer,
    ...props.data.incorrect_answers,
  ].sort(() => Math.random() - 0.5);

  if (shuffledAnswers.length > 2) {
    notBoolean = true;
    console.log("notBoolean");
  }
  const answersHintHandler = () => {
    setHint(true);
    console.log("hint: ", hint);
    console.log(newAnswers);
  };

  let progress = Math.round((props.score / props.numOfQuestions) * 100);

  return (
    <div>
      <h3 class="diff">Difficulty: {props.diff}</h3>
      <div classname="Questions">
        <Card>
          <ProgressBar bgcolor="#99ccff" progress={progress} height={30} />
          <h2>
            Questions {props.index}/{props.numOfQuestions}
          </h2>

          <h2
            className="question-text"
            dangerouslySetInnerHTML={{
              __html: props.data.question,
            }}
          />

          <ul>
            {notBoolean ? (
              <button onClick={answersHintHandler}>50/50</button>
            ) : (
              <p></p>
            )}
            {hint
              ? newAnswers.map((answer) => {
                  return (
                    <li
                      onClick={() => props.handler(answer)}
                      dangerouslySetInnerHTML={{
                        __html: answer,
                      }}
                    ></li>
                  );
                })
              : shuffledAnswers.map((answer) => {
                  return (
                    <li
                      onClick={() => props.handler(answer)}
                      dangerouslySetInnerHTML={{
                        __html: answer,
                      }}
                    ></li>
                  );
                })}
          </ul>
        </Card>
      </div>
    </div>
  );
};

导出默认 DisplayQuestion;

里提克·班格

将第一行和第二行替换为

import React, { useState } from 'react'

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在React中有条件地在div周围渲染锚链接

在react中有条件地定义一个const

React – 如何有条件地返回一个值(或回退)

React / Gatsby:有条件地将每两个帖子包装在div中

如何在JSP页面中有条件地显示div而不是另一个div的内容?

Vue3:根据父div的类有条件地为孩子显示一个div

基于路由有条件地渲染 CSS (React)

有条件地渲染 React JS 中的元素?

在 React 组件中有条件地渲染 <td>

有条件地在react jsx中渲染className

有条件地渲染 useEffect fetch React

React-Router:如何有条件地将路由重定向到另一个 url?

你如何创建一个有条件地显示它包装的子元素的 React 标签组件?

如何有条件地将样式应用于段落中的一个 React 属性?

如何在React Native中有条件地从三个不同的选项进行渲染?

如何使用React有条件地渲染2个数据源中的数据

在React中,我需要从本地存储中获取状态,然后根据该状态有条件地设置另一个状态

如何有条件地渲染使用钩子的React组件

React Bootstrap根据地图索引有条件地渲染

在React中基于路由有条件地渲染组件

React JS在上传时有条件地渲染动画乐透组件

React有条件地在特定路径中渲染组件

React Native:如何有条件地渲染从调用 Firebase 函数的函数返回的值?

有条件地渲染JSX的React组件的更新周期如何表现?

基于状态在React JS中有条件地渲染内容

React js 有条件地将类渲染到特定的映射项

react JS中有条件调用一个函数,每次点击按钮一个函数

有没有一种干净的方法可以有条件地为同一React Router路由加载和渲染不同的组件?

在React中返回并渲染一个div