2016-09-26 28 views
7

Próbuję dodać zdarzenie onClick do istniejącego svg. Teraz mam to:Dodaj zdarzenie onClick do elementu grupy (svg) z reakcją

<g id="Group" onClick={this.clickGroup.bind(this, 1)}> 

Które nieco działa, ale nie do końca ... Zdarzenie Kiedy klikam grupę ale „strefy”, która jest klikalny nie jest taka sama jak w grupie chcę być klikalnym (wydaje mi się całkowicie losowy).

Czy istnieje lepszy sposób dodawania zdarzeń do elementu <g> (z React?)?

Odpowiedz

10

Element g jest tylko pustym kontenerem; nie może samodzielnie inicjować zdarzeń.

Jeśli uruchomisz , zobaczysz, że możesz wywołać zdarzenie click, klikając element potomny elementu g, ale nie możesz, jeśli klikniesz w puste miejsce między nimi.

Musisz użyć rzeczywistych kształtów, aby wywołać zdarzenia w SVG.

+0

Dzięki za pomoc. Czy to oznacza, że ​​najlepszym rozwiązaniem byłoby owinięcie wszystkich ścieżek tworzących kształt w coś podobnego do prostokąta? – Clafou

+4

Możesz dodać przezroczysty prostokąt na swoich kształtach i dołączyć do niego wydarzenie. Jeśli ktoś ma bardziej eleganckie rozwiązanie, byłby zadowolony z jego obejrzenia. –