簡體   English   中英

組件未使用 onClick 事件 React 呈現

[英]Component not rendering with onClick event React

因此,我正在使用 google-map-react 並嘗試在單擊我在 map 上繪制的圖標時顯示一個彈出窗口。 現在,如果您單擊該圖標,控制台會正確記錄它,但沒有顯示任何內容。 這是一段代碼

  const ToolTip = ({name, address, info}) => <div>
    <h1>{name}</h1>
    <h2>{address}</h2>
    <p>{info}</p>
    </div>;
  var showToolTip = (name) =>  {
    currentToolTip = name
    console.log(currentToolTip === name)
  }
  var currentToolTip = ""
  const directory = places.map((data) => {
    //category - Directory
    if ((data.category === ButtonTitle.CampusSeeking) && data.deptMarker === "")
      return (
        <div lat={data.latitude}
        lng={data.longitude}>
        <Pin
        lat={data.latitude}
        lng={data.longitude}
          color={blue} 
          height="25px"
          width="25px"
          onClick = {() => showToolTip(data.name)}
        />
        {currentToolTip === data.name &&
        <ToolTip
        lat={data.latitude}
        lng={data.longitude}
        name = {data.name}
        address = {data.address}
        info = {data.info}>
        </ToolTip>}
        </div>
        
      );
......


return  (         
{loc === ButtonTitle.CampusSeeking && directory} )

您可能需要將currentToolTip更改為 state 而不是局部變量var currentToolTip = ""以在名稱更改時觸發渲染

const [currentToolTip, setCurrentToolTip] = useState("")
var showToolTip = (name) =>  {
    setCurrentToolTip(name)
}

您需要使用 state:

// replace
var currentToolTip = ""

// with
const [currentTooltip,setCurrentTooltip] = React.useState("");

  var showToolTip = (name) =>  {
    setCurrentTooltip(name)
  }

將 currentTooltip 保留為 state 而不是普通變量。

const [currentToolTip, setCurrentToolTip] = useState(null);

然后在圖標上更改這個onClick。

<Pin
  ...
  ...
  ...
  onClick = {() => setCurrentToolTip(data.name)}
>

因為狀態和道具會導致重新渲染,但普通變量不能。 這就是為什么您的currentToolTip === data.name這個邏輯每次都變得錯誤的原因。 因此,工具提示未呈現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM