在react hooks中 如何暴露大量方法
function FancyInput(props, ref) {
const inputRef = useRef();
/* 假如我要在这里暴露大量方法,难道我只能全部写到这里?
我就不能吧 () => ({})的对象单独提前到一个文件中?
但是我单独提取了,又会导致我的作用域链,无法找到当前inputRef,该如何解决?
*/
useImperativeHandle(ref, () => ({
focus: () => {
inputRef.current.focus();
}
}));
return <input ref={inputRef} ... />;
}
FancyInput = forwardRef(FancyInput);
采用这种解决方法
useImperativeHandle(ref, () => {
return getHandle(option, setOption)
}, [option])
// 这个可以单独一个文件
let getHandle = (opt, setOption) => ({
getValue:() => {
return opt.value
},
setValue: (value) => {
setOption((old) => ({...old, value: value}))
},
onChange: (customChange) => {
setOption((old) => ({...old, customChange}))
},
setOption: (obj) => {
setOption((old) => ({...old, ...obj}))
}
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可以把inputRef当参数传来传去呀