Я создаю игру по географии, в которой вы должны щелкнуть определенную страну на карте мира - если вы щелкнете по правой, страна изменит цвет, и в игре появится новая страна, на которую нужно щелкнуть. Если игрок не знает, он может нажать на кнопку, которая покажет ему правильный ответ. Для этого я хочу смоделировать событие щелчка, чтобы вызывалась та же функция onClick (), как если бы вы щелкнули по правильной стране.
Я использую D3, а карта мира состоит из путей svg. Ниже приведен код, который, как я думал, будет работать с использованием метода HTMLElement.click ():
function simulateClick() {
// for each index in the nodelist,
// if the properties are equal to the properties of currentTargetUnit,
// simulate a click on the path of that node
let nodelist = d3.selectAll(".unit")
for (let i = 0; i < nodelist._groups[0].length; i++) {
if (nodelist._groups[0].item(i).__data__.properties.filename === currentTargetUnit.properties.filename) {
console.log(nodelist._groups[0][i])
// logs the correct svg path element
nodelist._groups[0][i].click()
// logs TypeError: nodelist._groups[0][i].click is not a function
}
}
}
Затем я просмотрел несколько руководств, в которых говорится, что по какой-то причине я не совсем понимаю, что для этого вам скорее нужно использовать React.useRef, но во всех своих примерах они помещают значение ref в элемент, который возвращается из начиная с компонента React, например:
import React, { useRef } from "react";
const CustomTextInput = () => {
const textInput = useRef();
focusTextInput = () => textInput.current.focus();
return (
<>
<input type="text" ref={textInput} />
<button onClick={focusTextInput}>Focus the text input</button>
</>
);
}
Это явно не работает, потому что мои элементы пути svg изначально не возвращаются. Итак, мой вопрос - как я могу этого добиться, используя useRef или нет?
Ниже приведены некоторые предыдущие вопросы, которые я рассмотрел, но они также не помогли. Имитировать событие щелчка на элементе реакции Модуль визуализации React Test, имитирующий клики по элементам Имитация щелчка по элементу реакции