![](/img/trans.png)
[英]Using React, findDOMNode is deprecated in StrictMode is thrown as a warning when using react-transition-group
[英]React-Transition-Group: findDOMNode is deprecated in StrictMode
我正在使用动画库react-transition-group
在 react 中使用<TransitionGroup>
和<CSSTransition>
为 TODO 列表设置动画,如下所示
<ul>
<TransitionGroup className="todo-list">
{incompleteTodos.map((task) => (
<CSSTransition key={task.id} timeout={500} classNames={styles}>
<li key={task.id}>
<TodoTask
todo={task}
onClick={(todo) =>
toggleTodo({ data: todo })}
/>
</li>
</CSSTransition>
))}
</TransitionGroup>
</ul>
但是我在控制台中收到如下错误:
我阅读了有关在此官方更改日志和git 问题中提到的CSSTransition
元素上使用nodeRef={nodeRef}
的CSSTransition
,如下所示,但随后它开始表现得很奇怪,即某些元素在 UI 中没有正确显示,如下面的代码片段截图所示:
const nodeRef = React.useRef(null)
和
<ul>
<TransitionGroup className="todo-list">
{incompleteTodos.map((task) => (
<CSSTransition
key={task.id}
timeout={500}
classNames={styles}
nodeRef={nodeRef}
>
<li key={task.id} ref={nodeRef}>
<TodoTask
todo={task}
onClick={(todo) =>
toggleTodo({ data: todo })}
/>
</li>
</CSSTransition>
))}
</TransitionGroup>
</ul>
您需要为每个CSSTransition
制作一个单独的ref
。 最简单的方法是制作自定义组件:
<ul>
<TransitionGroup className="todo-list">
{incompleteTodos.map((task) =>
<TransitionTodo key={task.id} todo={task}/>}
</TransitionGroup>
</ul>
function TransitionTodo({todo}) {
nodeRef = useRef();
return (
<CSSTransition
timeout={500}
classNames={styles}
nodeRef={nodeRef}
>
<li ref={nodeRef}>
<TodoTask
todo={todo}
onClick={(todo) =>
toggleTodo({ data: todo })}
/>
</li>
</CSSTransition>
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.