【发布时间】:2016-12-15 01:40:03
【问题描述】:
以下 TypeScript 中的快速示例展示了一种无需使用内联(这被认为对性能不利)来获取类型化 ref 的方法。然而,必须定义两个变量(refAnimationWrapper 和refAnimationWrapperHandler)来定义一个引用是相当难看的。有没有人有更简单的解决方案,@decorators 可能是一个解决方案吗?
https://www.typescriptlang.org/docs/handbook/decorators.html
import * as React from 'react';
import {TweenMax} from 'gsap';
export class TransitionDummy extends React.Component<any, any> {
private transitionDuration = 0.4;
private refAnimationWrapper:HTMLDivElement;
private refAnimationWrapperHandler = (ref:HTMLDivElement) => this.refAnimationWrapper = ref;
constructor(props) {
super(props);
}
public componentWillEnter(done) {
TweenMax.fromTo(this.refAnimationWrapper, this.transitionDuration, {opacity: 0}, {opacity: 1, onComplete: done});
}
public componentWillLeave(done) {
TweenMax.to(this.refAnimationWrapper, this.transitionDuration, {opacity: 0, onComplete: done});
}
public render() {
return (
<div ref={this.refAnimationWrapperHandler}>
{this.props.children}
</div>
);
}
}
【问题讨论】:
-
为什么
<div ref={(input) => this.refAnimationWrapper = input}>的性能比<div ref={this.refAnimationWrapperHandler}>差? -
哦,没关系,我看到人们在谈论它here。就个人而言,我不会为了节省几微秒而牺牲代码质量。
-
我只使用内联 lambdas medium.com/@basarat/…
-
@DavidSherret 我可能最终会采用这种方法,我只是想知道是否有办法同时获得这两种方法。但可能对性能的影响很小。
-
@basarat 是的,那是我试图避免的。
标签: reactjs typescript