react教程,forwardRef相关组件包裹Wrapper写法
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文总结几个forwardRef
相关的wrapper
写法,其实就是对普通的组件代码进行包裹,然后拥有新的ref
相关功能的意思。不用本文的forwardRef
写法,ref
也是可以使用的。所以,不必太在意本文的forwardRef
高级用法。
大家好,这里是苏南大叔的程序如此灵动博客,记录苏南大叔和计算机代码的故事。本文测试环境:create-react-app@5.0.1
,react@18.2.0
,react-dom@18.2.0
,node@16.14.2
。
已有的forwardRef
在前面的文章里面,已经有下面的通用写法:
const Sunan_ = (props)=>{}
export const Sunan = forwardRef((props, ref) => <Sunan_ ref2={ref} {...props} />);
const class Sunan_ extends React.Component{}
export const Sunan = forwardRef((props, ref) => <Sunan_ ref2={ref} {...props} />);
子组件中使用 ref
={props.ref2}
或者
export const Sunan = forwardRef(function (props, ref) {}
子组件中使用 ref
={ref}
Wrapper1
const Sunan6_ = (props) => {
return (
<div>
<input type="password" ref={props.forwardedRef} />
</div>
);
};
export const Sunan6 = React.forwardRef((props, ref) => {
const Wrapper = React.memo(Sunan6_);
return <Wrapper {...props} forwardedRef={ref} />;
});
调用:
<Sunan6 ref={ref6} /><button onClick={() => { ref6.current.focus() }}>6号组件</button>
Wrapper2
const Wrapper2 = (Wrapper2Component) => {
return class Wrapper extends React.Component {
render() {
return <Wrapper2Component {...this.props} />
}
}
}
const Sunan7_ = (props) => {
return (
<div>
<input type="password" ref={props.forwardedRef} />
</div>
);
};
export const Sunan7 = Wrapper2(Sunan7_);
调用:
<Sunan7 forwardedRef={ref7} /><button onClick={() => { ref7.current.focus() }}>7号组件</button>
结束语
更多react
相关经验文章,请点击下面的链接:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。