1

我的目标是拥有 3 张不同的图像,当它们被点击时,每张图像都会改变显示的文本。我的问题是,当每个图像被点击时,它仍然在第一个列表项中显示图像路径,如下面的截图(“../../img/shield.png”)。我怎样才能防止这个显示?

import React, { useState } from "react";
import "./UserRoles.css";
import shield from "../../img/shield.png"
import sword from "../../img/sword.png"
import staff from "../../img/staff.png"
const roles = [
  [
     shield,
    "Term1",
    "Description1",
  ],
  [
     sword,
    "Term2",
    "Description2",
  ],
  [
     staff,
    "Term3",
    "Description3",
  ],
];
const UserRoles = () => {
  const [clickedText, setClickedText] = useState([]);

  var handleClick = (index) => {
    setClickedText(roles[index]);
  };

  return (
    <div>
      {/* map through texts array */}
      {roles.map((role, index) => (
        <img src={roles[index][0]} key={index} onClick={() => handleClick(index)} />
      ))}

      <ul>
        {clickedText.map((t, index) => (
          <ul>
            <li key={index}>{t}</li>
          </ul>
        ))}
      </ul>
    </div>
  );
};

export default UserRoles;

在此处输入图像描述

4

1 回答 1

1

目前所选数组中的所有值都打印为纯文本<li key={index}>{t}</li>,您可以添加一些条件:

<ul>
  {clickedText.map((t, index) => {
    return index === 0 ? <li key={index}><img src={t} /></li> : <li key={index}>{t}</li>
  })}
</ul>

于 2021-03-03T15:19:40.340 回答