在react hooks中 如何暴露大量方法

发布于 2022-09-13 01:12:13 字数 990 浏览 25 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

路弥 2022-09-20 01:12:13

可以把inputRef当参数传来传去呀

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文