我想实现的功能: react组件可以对外暴露一些方法,比如就是什么请求前拦截,数据返回后的自定义处理逻辑,获取按钮点击前的拦截方法。这些方法都是暴露给其他人用的,这种又不和ui产生任何的关联,外部在绑定这些方法的时候我希望不产生重新渲染,在函数式组件中药这么搞呢 用useRef?
// class 实现方式
class Child extends React.Component {
constructor(props) {
super(props);
window.child = this;
}
handleClick (){
alert(333)
}
click = () => {
this.handleClick();
}
render() {
return <button onClick={this.click}>按钮</button>
}
}
// 这样我可以修改绑定的事件触发,也不会引起重绘。并且在点击的时候 执行的也是弹出的9999
window.child.handleClick = () => {alert(9999)}
使用
useImperativeHandle
&forwardRef
,见文档:https://react.docschina.org/d...。或者可以声明一个传ref的prop,在组件里为其赋值,例如:
我习惯用第二种方法,第一种方法在使用ts的时候会导致Ref报类型错误,如果不用ts的话没问题。
另外,你使用类组件暴露组件内方法的用法不对,正确用法是使用Refs api,文档:https://react.docschina.org/d...