- 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/
我在 React 实践中发现了这个组件,但我不知道确切的行为是什么。 例如 const App = () => { return ( Welcome to
我有一个 JSON 函数在不同的 Activity 中以相同的格式正常工作,但是当我在这里运行它时,我收到错误。我已经确定了实际的 JSON 调用,该调用抛出了异常,但不知道为什么。请参阅 'JSON
我的问题是这样的,我正在尝试了解此跟踪的来源: 11-06 22:07:36.593 2744-3492/com.spot.spottester W/f: Suppressed StrictMode
这个问题在这里已经有了答案: Strict mode in android 2.2 (6 个答案) 关闭 7 年前。 StrictMode.ThreadPolicy policy = new Str
我正在尝试使用函数作为组件内的 prop,并且该组件是另一个组件的子组件。但该功能不起作用。?我可以知道为什么吗?这是我在控制台中收到的警告。 Warning: findDOMNode is depr
当我在 Android 2.3.6 上运行这段代码时,它工作正常。在 4.0 上我得到一个 StrictMode 异常。从关于 SO 的一些问题来看,您似乎无法在 UI 线程上进行网络操作。但我没有在
Draggable 包在严格模式下导致错误: Warning: findDOMNode is deprecated in StrictMode. findDOMNode waspassed an in
在应用发布之前,我在 Google Play 中出现以下错误。这不是警告,而是错误。我可以看到带有类似堆栈跟踪的警告。我不确定该应用程序是否会因此而被拒绝,因为发布前报告的摘要令人困惑。它说没有问题。
我正在开发我的第一个 Android 应用程序,并且主要基于研究内置。当我尝试登录我的用户时,我得到了 android.os.NetworkOnMainThreadException错误。我在网上读到
当我打开严格模式检测全部时,我的应用程序崩溃了应用程序的 super.onCreate()(即,甚至在我的任何代码执行任何操作之前)。 我的应用程序 onCreate 开启严格模式如下 overrid
Android 应用程序遇到了一些 ANR 问题,因此我实现了 StrictMode 策略。以前从未使用过这个,所以希望有人可以帮助解释以下内容: 为什么日志显示 2 个看似相似的违规行为,除了前 4
当 Android 的 StrictMode 检测到泄漏对象(例如 Activity )违规时,如果我能及时捕获堆转储,那将会很有帮助。但是,没有明显的方法来配置它来执行此操作。有谁知道可以用来实现它
我一直在尝试在 StrictMode 中运行我的应用程序,以检查是否存在任何可能已经潜入的隐藏问题。我遇到的一个问题是在使用 ContentResolver 时似乎是 Leaked DatabaseC
我已经开始使用 Android StrictMode 并发现在开发过程中让它始终运行会很棒,而不仅仅是在我在 git 中创建的特殊分支上。我这样做的原因是我的应用程序要求运行 1.6 及更高版本。 我
实际上,我正在尝试编写一个具有 minSDKversion:8 和 targetSDKversion:15 的应用,我需要使用 StrictMode.ThreadPolicy policy =
我正在运行我的应用程序,并在开发中激活了 StrictMode,如此处所述 StrictMode for lower platform versions并注意到一条错误消息,我不知道该怎么想,也找不到
经过一番试验,我发现在严格模式下会出现以下问题。 如果有人可以解释原因,我会很感兴趣。 举这个简单的例子,里面渲染 我只是安排一个更新状态的超时 : Example : let firstRender
当启用 StrictMode 时,它总是提示 FileReader 有 DiskReadViolation。无论我如何改进,它仍然存在。我怀疑它与 UIThread 滞后问题有关,请告诉我如何解决
我是 android 的新手,正在调试现有的应用程序。当应用程序运行时,我遇到了 StrictMode 策略违规。我想了解违规发生后采取了哪些措施?我正在粘贴日志。 D/StrictMode( 454
我只想使用 StrictMode.noteSlowCall 。我不知道该怎么办。开发者网站/androidxref 没有足够的解释。 下面是我的代码。 @Override public void on
我是一名优秀的程序员,十分优秀!