Использование connectDragSource с элементом, который использует новый API createRef (представленный в React 16.3.0) вместо ссылок обратного вызова, приводит к сбою приложения с ошибкой: TypeError: previousRef is not a function
.
Вот что выводит браузер:
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 Обнаружена та же проблема, можем ли мы узнать
должно быть сегодня я думаю. Сообщите мне, если возникнут проблемы с выпуском, который я вырезал позже
Самый полезный комментарий
Та же проблема. Должен ли я вернуться к использованию старой ссылки обратного вызова или есть способ обойти это?