Как использовать реактивный поппер с рендером

Я новичок, пытаюсь понять react-popper, На их github это пример кода:

import { Manager, Reference, Popper } from 'react-popper';

const Example = () => (
  <Manager>
    <Reference>
      {({ ref }) => (
        <button type="button" ref={ref}>
          Reference element
        </button>
      )}
    </Reference>
    <Popper placement="right">
      {({ ref, style, placement, arrowProps }) => (
        <div ref={ref} style={style} data-placement={placement}>
          Popper element
          <div ref={arrowProps.ref} style={arrowProps.style} />
        </div>
      )}
    </Popper>
  </Manager>
);

Это так и должно работать? Я не уверен, что понимаю, как я мог бы использовать этот код, как бы он выглядел, если бы я импортировал / использовал этот код Example Компонент в мой собственный родительский компонент; Должен ли я пройти refs? Как так? Было бы здорово, если бы кто-нибудь дал мне рабочий пример этого кода, я бы просто хотел посмотреть, как его использовать.

2 ответа

Я предполагаю, что вы стремитесь к функции всплывающей подсказки. Это то, что вы пытаетесь достичь?

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

  ...
  <Manager>
    <Reference>
      {({ ref }) => (
        <button
          type="button"
          ref={ref}
          onMouseEnter={() => {
            /* [[SOME CODE TO SET shouldShowElement TO TRUE]] */
          }}
          onMouseLeave={() => {
            /* [[SOME CODE TO SET shouldShowElement TO FALSE]] */
          }}
        >
          Reference element
        </button>
      )}
    </Reference>
    {shouldShowElement ? (
      <Popper placement="right">
        {({ ref, style, placement, arrowProps }) => (
          <div ref={ref} style={style} data-placement={placement}>
            Popper element
            <div ref={arrowProps.ref} style={arrowProps.style} />
          </div>
        )}
      </Popper>
    ) : null}
  </Manager>
  ...

Если вы хотите более высокоуровневый API, вы можете использовать response-tippy или Reaction-popper -tooltip

Не беспокойтесь слишком сильно о рендере. В большинстве случаев вам не нужно изменять их.

Просто имейте в виду, что

  • ref сделать опору из Reference должен быть прикреплен к элементу ссылки (ваш предмет, где прикреплен ваш поппер).
  • ref сделать опору из Popper должны быть прикреплены на поппер (ваша подсказка или что-то еще).

style а также placement рендер опора для географического положения на странице.

В резюме в этом примере будет отображаться кнопка со стрелкой <div> который содержит "Popper element",

Другие вопросы по тегам