5

“反应”:“^16.13.1” “反应过渡组”:“^4.3.0”

  <React.StrictMode>
    <Router>
        <App />
    </Router>
  </React.StrictMode>

大家好。

我遇到了 findDOMNode 警告,在互联网上找不到正确的解决方案。

index.js:1 警告:在 StrictMode 中不推荐使用 findDOMNode。findDOMNode 被传递了一个在 StrictMode 内的 Transition 实例...

我从此处的文档中复制的此示例并单击按钮时,会出现相同的错误。

const Toolbar = (props) => {
    const [inProp, setInProp] = useState(false);
    return (
        <div>
            <CSSTransition in={inProp} timeout={200} classNames="my-node">
                <div>
                    {"I'll receive my-node-* classes"}
                </div>
            </CSSTransition>
            <button type="button" onClick={() => setInProp(true)}>
                Click to Enter
            </button>
        </div>
    )
};

来自互联网的解决方案建议尝试 createRef (我使用了 usePef 钩子),但使用转换,它不起作用。

似乎 React.StrictMode 会抛出这样的警告,直到该库的补丁被合并,但我仍然没有看到创建的问题

对于如何解决问题的任何帮助或建议,我将不胜感激

4

2 回答 2

8

他们从4.4.0版本中修复了该错误。

解决这个问题可以传递nodeRefCSSTransition

const Toolbar = (props) => {
    const [inProp, setInProp] = useState(false);
    const nodeRef = useRef(null)
    return (
        <div>
            <CSSTransition in={inProp} nodeRef={nodeRef} timeout={200} classNames="my-node">
                <div ref={nodeRef}>
                    {"I'll receive my-node-* classes"}
                </div>
            </CSSTransition>
            <button type="button" onClick={() => setInProp(true)}>
                Click to Enter
            </button>
        </div>
    )
};

我希望这会有所帮助。

于 2020-05-16T20:45:29.417 回答
0

对于任何使用基于类的组件的人,建议createRef改用。

例子:

const nodeRef = React.createRef(null);

我遇到了同样的问题,而且正如@warkentien2 所说,您还需要在子组件中添加引用,否则不会发生任何事情。

于 2020-07-29T07:24:28.980 回答