React-dnd: Добавить поддержку React 16.3 createRef типа ref

Созданный на 3 апр. 2018  ·  13Комментарии  ·  Источник: react-dnd/react-dnd

Использование connectDragSource с элементом, который использует новый API createRef (представленный в React 16.3.0) вместо ссылок обратного вызова, приводит к сбою приложения с ошибкой: TypeError: previousRef is not a function .

https://github.com/facebook/react/pull/12162

enhancement

Самый полезный комментарий

Та же проблема. Должен ли я вернуться к использованию старой ссылки обратного вызова или есть способ обойти это?

Все 13 Комментарий

Вот что выводит браузер:

    return (0, _react.cloneElement)(element, {
        ref: function ref(node) {
            newRef(node);

            if (previousRef) {
                previousRef(node); // << fails with new refs
            }
        }
    });

Та же проблема. В первый раз я наконец-то получил возможность использовать новые refs, и на моем пути есть react-dnd.

В долгосрочной перспективе я не уверен насчет всей модели react-dnd использования findDOMNode и замены ref. Когда в React есть новые createRef и withRef. Новый forwardRef API . И ряд API-интерфейсов начинают использовать реквизиты рендеринга.

Но пока достаточно проверить, является ли previousRef объектом со свойством current и установить его вместо того, чтобы вызывать его как функцию.

У кого-нибудь есть решения для этого, все еще используя createRef ()?

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

У меня такая же проблема.
@darthtrevino https://codesandbox.io/s/733onvqwl6, возможно, эта песочница поможет.

Та же проблема. Должен ли я вернуться к использованию старой ссылки обратного вызова или есть способ обойти это?

+1
использование React.createRef() и ref.current привело к сбою приложения.

Когда это будет исправлено?

По-прежнему не исправлено: /

Я найду время после реакции-conf, чтобы разобраться в этом

Я смог использовать обходной путь, как это было предложено, путем инкапсуляции ref div внутри другого пустого div.
пример:

 <div>
        <div
          style={{
            position: "relative",
            borderStyle: "dashed",
            width: 300,
            height: 200,
            position: "relative"
          }}
          ref={this.myRef}
        />
      </div>

👍 любые новости об этом @darthtrevino. было бы здорово услышать обновление

@darthtrevino Обнаружена та же проблема, можем ли мы узнать

должно быть сегодня я думаю. Сообщите мне, если возникнут проблемы с выпуском, который я вырезал позже

Была ли эта страница полезной?
0 / 5 - 0 рейтинги