- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我只是想在路由器转换期间使用 Refs 来定位组件中的元素。目前,来自 React Transition Group 的 onEnter、onExit 和 addEndListener 事件已经让您可以访问正在制作动画的 DOM 节点。这在一段时间内很好,但现在你可能已经知道你得到了错误。
index.js:1 Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of Transition which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely [1]
import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import { CSSTransition } from 'react-transition-group';
import { gsap } from 'gsap';
import Header from './tools/header';
import About from './pages/about';
import Home from './pages/home';
const routes = [
{ path: '/', name: 'Home', Component: Home },
{ path: '/about', name: 'About', Component: About },
]
function Routeapp() {
const nodeRef = React.useRef(null);
const onEnter = (node) => {
console.log(node)
gsap.from(
[node.children[0].firstElementChild, node.children[0].lastElementChild],
{
duration: 0.6,
y: 30,
delay: 0.6,
ease: 'power3.inOut',
opacity: 0,
stagger: {
amount: 0.3,
},
}
);
};
const onExit = node => {
gsap.to(
[node.children[0].firstElementChild, node.children[0].lastElementChild],
{
duration: 0.6,
y: -30,
ease: 'power3.inOut',
opacity: 0,
stagger: {
amount: 0.15,
},
}
);
};
return (
<Router>
<Header />
<div className="container">
{routes.map(({ path, Component }) => (
<Route key={path} exact path={path}>
{({ match }) => (
<CSSTransition
in={match != null}
key={path}
timeout={1200}
classNames="page"
onEnter={onEnter}
onExit={onExit}
unmountOnExit={true}
>
<div className="page" ref={nodeRef} >
<Component />
</div>
</CSSTransition>
)}
</Route>
))}
</div>
</Router>
);
}
export default Routeapp;
主页.js
import React from 'react';
import Title from '../tools/title';
const Home = () => {
return (
<div className="inner">
<Title lineContent="this is the" lineContent2="Home page" />
<div className={'infoBox'}>
<p className="info">hello mel and welcome</p>
</div>
</div>
);
};
export default Home;
about.js
import React from 'react';
import Title from '../tools/title';
const About = () => {
return (
<div className="inner">
<Title lineContent={'this is the'} lineContent2={'About page'} />
<div className={'infoBox'}>
<p className="info pink">
Lorem Ipsum is simply dummy text of the printing and typesetting
industry. Lorem Ipsum has been the industry's standard dummy text ever
since the 1500s, when an unknown printer took a galley of type and
scrambled it to make a type specimen book. It has survived not only
five centuries, but also the leap into electronic typesetting,
remaining essentially unchanged. It was popularised in the 1960s with
the release of Letraset sheets containing Lorem Ipsum passages, and
more recently with desktop publishing software like Aldus PageMaker
including versions of Lorem Ipsum.
</p>
</div>
</div>
);
};
export default About;
我的问题是我正在尝试找到一种方法来“引用”我的“主页”和“关于”组件,这样我不仅可以为它们设置动画,还可以在可能的情况下为“onExit”和“onEnter” Prop 添加不同的补间。
return (
<Router>
<Header />
<div className="container">
{routes.map(({ path, Component }) => (
<Route key={path} exact path={path}>
{({ match }) => (
<CSSTransition
in={match != null}
key={path}
nodeRef={nodeRef}
timeout={1200}
classNames="page"
onEnter={onEnter}
onExit={onExit}
unmountOnExit={true}
>
<div className="page" ref={nodeRef} >
<Component />
</div>
</CSSTransition>
)}
</Route>
))}
</div>
</Router>
);
正如预期的那样,这会导致我的应用程序停止工作,因为'nodeRef'返回false,并且当使用nodeRef prop时,节点不会传递给回调函数(例如onEnter),因为用户已经可以直接访问节点。
最佳答案
快速解决方案是:
./src/index.js 文件并将其更改为:
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
对此:
ReactDOM.render(
<App />
document.getElementById('root')
);
关于javascript - 在 StrictMode 中不推荐使用 findDOMNode 如何改用 refs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63677852/
我正在尝试使用函数作为组件内的 prop,并且该组件是另一个组件的子组件。但该功能不起作用。?我可以知道为什么吗?这是我在控制台中收到的警告。 Warning: findDOMNode is depr
Draggable 包在严格模式下导致错误: Warning: findDOMNode is deprecated in StrictMode. findDOMNode waspassed an in
我试图用 material-ui 和 React 制作一个选择菜单 const SelectLevelButton = forwardRef((props, ref) => { const [st
我被指派修复一些失败的 Jest 测试。这是一个例子: 这是 checkboxGroup.spec.js: import React from 'react'; import ReactDOM fro
我有 /* @jsx React.DOM*/ var Login = React.createClass({ Validate: function(){ debugger;
我有一个使用 findDOMNode() 的旧代码。 这是我的代码,其中 someComponent1 和 Expand 已导入。 在这里,我有些怀疑我用 findDOMNode() 编写的代码是否工
我创建了一个 HOC 来监听其包装组件外部的点击,以便包装组件可以根据需要进行监听和 react 。 HOC 看起来像这样: const addOutsideClickListener = (Wrap
我正在使用 antd 并且看到此错误 findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of DO
我知道有React.findDOMNode(component).value/focus() 。我正在寻找所有可以与React.findDOMNode一起使用的方法. 例如,我有一个 标签,我尝试过
出于某种原因,我无法使用 React.findDOMNode 函数。浏览器提示类型错误,说 React.findDOMNode 不是函数。这是发生这种情况的代码: var React = requir
我正在使用 ReactJS 和 Flux 构建一个网络应用程序,我正在尝试使用 findDOMNode 方法获取当前 div 的节点,但出现下一个错误: Uncaught TypeError: Rea
我正在使用 react-bootstrap 中的工具提示覆盖,但在 StrictMode 中不推荐使用错误 findDOMNode。根据 documentation使用overlaytrigger的函
我目前正在 Jest 测试 React 组件,组件的内联样式会根据不同的 props 值而改变。 这是一个关于我想做的事情的例子: let firstChild = TestUtils.findRen
“ react ”:“^16.13.1” “ react 过渡组”:“^4.3.0” 大家好。 我遇到了 findDOMNode 警告,在互联网上找不
我不完全理解,但显然it isn't recommended to use findDOMNode() . 我正在尝试创建拖放组件,但我不确定应该如何访问组件变量中的引用。这是我目前拥有的示例: co
谁能告诉我两者有什么区别 React.findDOMNode(this.refs.email).value 和 this.refs.email.getDOMNode().value 他们在做同样的事情
我正在尝试研究如何使用 typescript 和 react js。我关注这个link我成功地安装了文件。这是 package.json { "name": "proj", "version"
我需要通过深层嵌套组件进行事件冒泡,我尝试做如下的事情 import {ReactDOM,render, unmountComponentAtNode} from 'react-dom';
我正在关注 React Tutorial并卡在如何使用 React.findDOMNode 上. 这是我的代码: export class CommentForm extends React.Comp
大家好,我只是想在路由器转换期间使用 Refs 来定位组件中的元素。目前,来自 React Transition Group 的 onEnter、onExit 和 addEndListener 事件已
我是一名优秀的程序员,十分优秀!