前情:我须要在Component中获取hook中某个参数的值,而hook被Form包了一层,此时我没有方法简略地通过ref获取hook中的参数。
开发过程当中查了很久最终解决了,记录一下不便当前查阅。
本文记录Component为父组件,hook为子组件的状况。
我的习惯是一个组件放一个文件。
父组件ParentCom.jsx:
import ChildHook from './ChildHook.jsx';export default class ParentCom extends React.Component{ constructor(){ super(); this._subRef = React.createRef(); } _onClick=()=>{ console.log(this._subRef.status); } render(){ <ChildHook wrappedComponentRef={(ref)=this._subRef = ref} /> <input onClick={this._onClick} /> };}
子组件ChildHook.jsx
const SubHook = (props)=>{ let statusRef = React.useRef(true); // 在hook中应用ref须要fowardRef、useImperativeHandle配合。 useImperativeHandle(props.refInstance, ()=({ status: statusRef.current }));}const SubHookForwardRef = fowardRef((props, ref)=>( <SubHook {...props} refInstance={ref} />));export default Form.create()(SubHookForwardRef);