Javascript 当鼠标悬停在单词上时,Reactjs下拉菜单不显示

Javascript 当鼠标悬停在单词上时,Reactjs下拉菜单不显示,javascript,css,reactjs,Javascript,Css,Reactjs,有人能告诉我为什么这个演示中没有显示下拉菜单吗?当我将鼠标悬停在单词“集体”上时,应该显示下拉菜单 要使应用程序正常工作,您必须在输入框中键入“集体”,单击分析,然后将显示一个进度条,单击进度条中的蓝线,在单词“集体”下显示下划线,然后将鼠标悬停在“集体”上word和下拉菜单应该显示,但当我将鼠标悬停在单词“collective”而不是下拉菜单上时,整个窗口将消失 import React, { useState, useEffect } from "react"; import ReactD

有人能告诉我为什么这个演示中没有显示下拉菜单吗?当我将鼠标悬停在单词“集体”上时,应该显示下拉菜单

要使应用程序正常工作,您必须在输入框中键入“集体”,单击分析,然后将显示一个进度条,单击进度条中的蓝线,在单词“集体”下显示下划线,然后将鼠标悬停在“集体”上word和下拉菜单应该显示,但当我将鼠标悬停在单词“collective”而不是下拉菜单上时,整个窗口将消失

import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";
import { Content, Dropdown, Label, Progress, Button, Box } from "rbx";

import "rbx/index.css";

function App() {
  const [serverResponse, setServerResponse] = useState(null);
  const [text, setText] = useState([]);
  const [loading, setLoading] = useState(false);
  const [modifiedText, setModifiedText] = useState(null);
  const [selectedSentiment, setSentiment] = useState(null);
  const [dropdownContent, setDropdownContent] = useState([]);
  const [isCorrected, setIsCorrected] = useState(false);
  const [displayDrop, setDisplayDrop] = useState(false);
  useEffect(() => {
    if (serverResponse && selectedSentiment) {
      const newText = Object.entries(serverResponse[selectedSentiment]).map(
        ([word, recommendations]) => {
          const parts = text[0].split(word);
          const newText = [];
          parts.forEach((part, index) => {
            newText.push(part);
            if (index !== parts.length - 1) {
              newText.push(
                <u
                  className="dropbtn"
                  data-replaces={word}
                  onMouseOver={() => {
                    setDropdownContent(recommendations);
                    setDisplayDrop(true);
                  }}
                >
                  {word}
                </u>
              );
            }
          });

          return newText;
        }
      );

      setModifiedText(newText.flat());
    }
  }, [serverResponse, text, selectedSentiment]);

  const handleAnalysis = () => {
    setLoading(true);

    setTimeout(() => {
      setLoading(false);
      setServerResponse({ joy: { collective: ["inner", "constant"] } });
    }, 1500);
  };

  const handleTextChange = event => {
    setText([event.target.innerText]);
  };

  const replaceText = wordToReplaceWith => {
    const replacedWord = Object.entries(serverResponse[selectedSentiment]).find(
      ([word, recommendations]) => recommendations.includes(wordToReplaceWith)
    )[0];

    setText([
      text[0].replace(new RegExp(replacedWord, "g"), wordToReplaceWith)
    ]);
    setModifiedText(null);
    setServerResponse(null);
    setIsCorrected(true);
    setDropdownContent([]);
  };

  const hasResponse = serverResponse !== null;

  return (
    <Box>
      <Content>
        <div
          onInput={handleTextChange}
          contentEditable={!hasResponse}
          style={{ border: "1px solid red" }}
        >
          {hasResponse && modifiedText
            ? modifiedText.map((text, index) => <span key={index}>{text}</span>)
            : isCorrected
            ? text[0]
            : ""}
        </div>
        <br />
        {displayDrop ? (
          <div
            id="myDropdown"
            class="dropdown-content"
            onClick={() => setDisplayDrop(false)}
          >
            dropdownContent.map((content, index) => (
            <>
              <strong onClick={() => replaceText(content)} key={index}>
                {content}
              </strong>{" "}
            </>
            ))
          </div>
        ) : null}
        <br />
        <Button
          color="primary"
          onClick={handleAnalysis}
          disabled={loading || text.length === 0}
        >
          analyze
        </Button>
        <hr />
        {hasResponse && (
          <Label>
            Joy{" "}
            <Progress
              value={Math.random() * 100}
              color="info"
              onClick={() => setSentiment("joy")}
            />
          </Label>
        )}
      </Content>
    </Box>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

问题是:

{displayDrop ? (
      <div
        id="myDropdown"
        class="dropdown-content"
        onClick={() => setDisplayDrop(false)}
      >
        dropdownContent.map((content, index) => (
        <>
          <strong onClick={() => replaceText(content)} key={index}>
            {content}
          </strong>{" "}
        </>
        ))
      </div>
    ) : null}
这里有一个正在工作的沙盒,它现在正在显示此内容

    {displayDrop ? (
      <div
        id="myDropdown"
        class="dropdown-content"
        onClick={() => setDisplayDrop(false)}
      >
        {dropdownContent.map((content, index) => (
        <>
          <strong onClick={() => replaceText(content)} key={index}>
            {content}
          </strong>{" "}
        </>
        ))}
      </div>
    ) : null}