react-joyride не принимает пользовательскую подсказку

#typescript

Вопрос:

Я пытаюсь использовать react-joyride для небольшого тура. До сих пор все работает нормально, но если реализовать пользовательскую подсказку, как описано в документации, это приведет к сбою TypeError: Invalid parameter: element must be an HTMLElement

Я попробовал использовать самый простой подход, потому что многие элементы в примере являются неопределенными классами. Это должно было просто что-то показать, чтобы я мог поиграть со стилем и реквизитом. Я также попытался использовать другие теги узлов или попытаться использовать полный пример кода и определить используемые классы с помощью чайников. Я также просмотрел некоторые другие демонстрации/образцы в сети, но безрезультатно.

У кого — нибудь есть идея, какие запросы на поездку или что я должен использовать?

Код, который я использую, таков:

 import Joyride from 'react-joyride'
import PageTourModal from './components/PageTourModal'
[...]

class pageTour [...]

render () {
[...]
    const mySseps = [
      {
        disableBeacon: true,
        target: '[tourtag="Overview"]',
        title: 'Get a quick overview',
        content:
          'Gives you a quick overview',
      },
      {
        disableBeacon: true,
        target: '[tourtag="information"]',
        title: 'Information',
        content: 'Quickly get all information about your account'
      },
      {
        disableBeacon: true,
        target: '[tourtag="troubleshoot"]',
        title: 'Troubleshoot section',
        content: 'Look here if you run into any problems'
      },
    ]

    return (<Joyride
      steps={mySseps}
      continuous
      disableOverlayClose
      hideBackButton
      tooltipComponent={PageTourModal}
    ></Joyride>)

 
 class PageTourModal

interface iPageTourModal {
  continuous: boolean // If the tour is continuous or not
  index: number // The current step's index
  isLastStep: boolean // The name says it all
  size: number // The number of steps in the tour
  step: any // The current step data
  backProps: any // The back button's props
  closeProps: any // The close button's props
  primaryProps: any // The primary button's props (Close or Next if the tour is continuous)
  skipProps: any // The skip button's props
  tooltipProps: any // The root element props (including ref)
}

const PageTourModal = ({
  continuous,
  index,
  isLastStep,
  size,
  step,
  backProps,
  closeProps,
  primaryProps,
  skipProps,
  tooltipProps,
}: iPageTourModal) => {
  return (<div>HELLO WORLD</div>)
}

export default PageTourModal
 

Ответ №1:

Чтобы кто-нибудь наткнулся на это: я нашел решение после нескольких часов поисков и попыток. Пользовательский компонент распознается как HTMLElement только в том случае, если tooltipProps он передается на главный узел. Наверное, я хотел, чтобы модал был слишком простым

 const PageTourModal = ({
  continuous,
  index,
  isLastStep,
  size,
  step,
  backProps,
  closeProps,
  primaryProps,
  skipProps,
  tooltipProps,
}: iPageTourModal) => {
  return (<div {...tooltipProps}>HELLO WORLD</div>)
}