【发布时间】:2020-02-05 23:31:44
【问题描述】:
使用有状态模式,我通常在我的构造函数中初始化一种帮助类,并在一些组件生命周期方法中使用它的方法,如下所示:
class StatefulComponent extends Component {
constructor(props) {
super(props);
this.helper = new HelperClass();
}
componentDidMount() {
this.helper.doSomething();
}
}
现在,我想将相同的逻辑转换成这样的无状态函数组件:
const StatelessFunction = (props) => {
this.helper = new HelperClass();
useEffect(() => {
this.helper.doSomething();
}, []);
}
但是当我看到这个组件从一开始就被每次 prop 更改调用时,我很担心。 这让我觉得我的类实例被一遍又一遍地创建。 我错了吗?我可以做些什么来防止重新创建我的班级并改用 ref 吗?
我遇到了useRef,但不确定它是否适合我的情况。
【问题讨论】:
-
useEffect+useRef -
useRef需要初始设置为 null 并在useEffect中正确设置 (ref.current) 以避免在渲染时重新创建
标签: reactjs typescript react-native react-hooks