在StrictMode中,findDOMNode已弃用。向findDOMNode传递了StrictMode内部的DraggableCore的实例

findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of DraggableCore which is inside StrictMode(在StrictMode中,findDOMNode已弃用。向findDOMNode传递了StrictMode内部的DraggableCore的实例)
本文介绍了在StrictMode中,findDOMNode已弃用。向findDOMNode传递了StrictMode内部的DraggableCore的实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可拖动包在严格模式下导致错误:

警告:findDOMNode在StrictMode中已弃用。findDOMNode是 传递了StrictMode内部的DraggableCore实例。 相反,可以将引用直接添加到要引用的元素。 在此了解有关安全使用裁判的更多信息: https://reactjs.org/docs/strict-mode.html#warning-about-deprecated-finddomnode-usage

显然他们从来没有修复过https://github.com/STRML/react-draggable/issues/440,你们有什么好的/优雅的解决方案吗?

推荐答案

根据https://github.com/STRML/react-draggable/blob/v4.4.2/lib/DraggableCore.js#L159-L171上的官方Git存储库

/* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.
* Unfortunately, in order for <Draggable> to work properly, we need raw access
* to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`
* as in this example:
*/

function MyComponent() {
    const nodeRef = React.useRef(null);
    return (
        <Draggable nodeRef={nodeRef}>
            <div ref={nodeRef}>Example Target</div>
        </Draggable>
    );
}

/*
* This can be used for arbitrarily nested components, so long as the ref ends up
* pointing to the actual child DOM node and not a custom component.
*/

起作用了!

这篇关于在StrictMode中,findDOMNode已弃用。向findDOMNode传递了StrictMode内部的DraggableCore的实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)