繁体   English   中英

无状态函数中的 React OnClick 不起作用

[英]React OnClick inside stateless function does not work

我正在使用 react-google-maps 制作带有显示 InfoWindows 的标记的地图,您可以在其中按下按钮将某些内容打印到控制台。 我使用以下代码,但 onClick 不执行该功能:

function Map() {

  const [selectedKalas, setSelectedKalas] = useState(null);
  const [data, setData] = useState({ hits: [] });

  function sendMergeRequest() {
    console.log("Sender merge request");
  };

  /* Fetching some data... */

   useEffect(() => {
    const fetchData = async () => {
      const result = await axios(database_url_coordinates);
      setData(result);
    };
    fetchData();
  }, []);

  return (
    <GoogleMap>
      {
        data.data.map(kalasobjekt => {
          if (kalasobjekt.username !== "admin" && kalasobjekt.kalas !== null) {
            return (
                  <Marker
                    key={kalasobjekt.kalas.id}
                    position={{
                      lat: parseFloat(kalasobjekt.kalas.lat),
                      lng: parseFloat(kalasobjekt.kalas.lng)
                    }}
                    onClick={() => {
                      setSelectedKalas(kalasobjekt);
                    }}
                  />
                )}
            );
          }
        }))
      }
      {selectedKalas && (
        <InfoWindow
          position={{
            lat: parseFloat(selectedKalas.kalas.lat),
            lng: parseFloat(selectedKalas.kalas.lng)
          }}
          onCloseClick={() => {
            setSelectedKalas(null);
          }}
        >
              <div>
                <h2>{selectedKalas.username}</h2>
                <p>Eier: {selectedKalas.kalas.fullName}</p>
                <p>Kapasitiet: {selectedKalas.kalas.capacity}</p>
                <div className="submitData">
                  <button onClick={sendMergeRequest}>
                    Merge hos {selectedKalas.username}!
                  </button>
                </div>
              </div>

        </InfoWindow>
      )}
    </GoogleMap>
  );
}

我一直在四处寻找并试图理解为什么这不起作用,但似乎找不到任何好的答案。 我希望

尝试这样的事情:

function Hello() {
    const handleClick = function handle(){
        alert('Btn is clicked');
    }

  return (
        <div>
            <button onClick={ handleClick }>Click Me</button>
        </div>
    )
}

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);

工作小提琴

我认为将此函数SendMergeRequest方法保留在函数Map之外应该可以工作。

例子:

function Map() {
// map code
}

function SendMergeRequest() {
  console.log("Sender merge request");
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM