【发布时间】:2019-12-28 03:05:05
【问题描述】:
所以,我的问题是我有一个组件,我给它关联了一个动画,并且在第一次渲染组件时它正在工作,但是在点击事件时,我更改了一些条件和一些与这个组件相关联的道具, 但是我的元素没有重新渲染,它只是改变了已经改变的东西,这意味着该元素没有从 dom 中删除并再次添加到 DOM 中,这就是我无法再次看到动画的原因,所以它没有重新渲染,或者我只是没有得到重新渲染的含义。
我当然尝试了一些解决方案,但我被卡住了,我尝试使用这种方法:
this.forceUpdate();
但同样,我仍然没有得到任何东西。
我认为我不必编写我编写的整个代码,因为它很多并且包含许多其他内容,但这是我认为需要的。
methodWillReceiveProps 在我的组件中:
componentWillReceiveProps(props) {
if (props.isRerendered) {
this.forceUpdate();
}
}
props.isRendered 每次都返回 true,我检查了一些 console.log 方法。
这是渲染的:
render() {
return (
<div
className={cs({
"tls-forms": true,
"tls-forms--large": this.props.type === "S",
"tls-forms--medium tls-forms--login": !(this.props.type === "S")
})}
>
// content here
</div>);
}
这里是 sass 文件和简单的渐变动画:
.tls-forms {
animation: formFading 3s;
// childs properties here
}
@keyframes formFading {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
我将非常感谢您提供的任何帮助。
【问题讨论】:
-
在 React 重新渲染组件之后,它将新渲染与旧渲染进行比较。并仅更新已更改的部分。因此,您可以尝试将 key prop 添加到您的 div 中。需要运行动画时更新此键值。
-
您想在 onClick 事件时重新制作动画吗?
-
@user9408899 是的,我想重新制作动画。
-
@PavloKovchuk 所以 React 重新渲染方法不会从 dom 中删除元素并再次添加它们?
-
@TaouBen reactjs.org/docs/rendering-elements.html“React 只更新必要的东西”部分
标签: javascript reactjs sass