Как нарисовать стрелку от одного div к другому в React dynamic JSX?

#javascript #html #css #reactjs

#javascript #HTML #css #reactjs

Вопрос:

У меня есть приложение react с некоторыми динамическими разделениями, исходящими из функции, которая обрабатывает набор данных для подключения с помощью стрелок. Каждый div — это «Вопрос», и у каждого вопроса есть «ответы», и у каждого ответа есть свой подвопрос. Взаимосвязь между подвопросами и ответами заключается в том, что каждый ответ и связанный с ним подвопрос имеют один и тот же идентификатор с разными префиксами (если ответ имеет идентификатор «option8», соответствующий подвопрос — «q8»). Проблема в том, что функция запущена, но не видит никакой стрелки.

Но когда я пытаюсь использовать статические идентификаторы HTML div, стрелки видны правильно

Я нашел модуль npm «react-dom-arrow» и создал функцию для сопоставления каждого ответа и его подвопроса и рисования стрелки следующим образом.

 drawArrows = () => {
    const questionsList = this.state.questionsData;
    return questionsList.map(each => {
        return (
            <Arrow
                fromSelector={`#option${each.order}`}
                fromSide={'right'}
                toSelector={`#q${each.order}`}
                toSide={'left'}
                color={'blue'}
                stroke={3}
            />
        )
    });
}

render () {
    return (
       ...code
       { this.drawArrows() }
    )
}
 

Я думал использовать свой собственный метод стрелки SVG, но не имею правильного представления о том, как создавать SVG с идентификаторами div. Как я могу решить это даже по-другому?

Комментарии:

1. drawArrows ничего не возвращает.

2. @jonrsharpe почему это? Что не так?

3. Ответ на оба вопроса таков: кто бы это ни написал, он не включал оператор return .

4. @jonrsharpe Я думал, что возврата внутри карты достаточно. Я попробую с внешним возвратом

5. Это возвращает результат обратного вызова map , который отличается от Drawar ARROWS .