javascript - 如何在React中使用forwardRef输入多个引用?

标签 javascript reactjs typescript ref react-forwardref

我有父组件,我在其中定义了一些引用。然后我创建一个包含所有这些引用的对象。然后将此对象传递给子组件的 ref。

父组件只是一个页面组件,子组件是该页面上的部分。在子组件内部,我有按钮,通过单击该按钮,我滚动到下一部分。


const Home: React.FC = () => {
  const effectiveCoursesRef = useRef(null);
  const reviewsRef = useRef(null);
  const howWorksRef = useRef(null);
  const scienceBehindRef = useRef(null);
  const FAQRef = useRef(null);

  const refObject = {
    effectiveCoursesRef,
    reviewsRef,
    howWorksRef,
    scienceBehindRef,
    FAQRef,
  };
  
  return (
    <MainLayout
    >
      <main>
        <EffectiveCourses ref={refObject} />
        <Reviews ref={refObject} />
        <HowSleepSchoolWork ref={refObject} />
        <ScienceBehind ref={refObject} />
        <FAQ ref={refObject} />
      </main>
    </MainLayout>
  );
};

export default Home;

在子组件中,我在forwardRef中获取引用


const ScienceBehind = forwardRef((_, ref: any) => (
  <section className={`${styles.section}`} ref={ref.scienceBehindRef}>
    <div className="container">
      <h2 className={styles.sectionTitle}>Science behind Sleep School</h2>
      <ArrowButton ref={ref.FAQRef} color="#082B4B" />
    </div>
  </section>
));

export default ScienceBehind;

这种方法工作正常,但我有 typescript 错误。请帮助我弄清楚如何输入此代码并解决错误。或者更好的方法来实现相同的目标。 Here is error from Parent component And Here is error from child component

任何帮助appriced! 问候,安娜。

我已经尝试输入它,但仍然有错误。

enter image description here

最佳答案

不久前,我也遇到了与您类似的问题,这对我来说很有效。虽然我不确定这是否也适合您,但您可以尝试在定义引用时添加类型。

const scienceBehindRef = useRef<ScienceBehindRefType>(null);

编辑 23-08-31

抱歉,我试图重新创建您的问题,基本上发生的情况是,当您用 forwardRef 包装 ScienceBehind 时,它需要一个 ref 在引用键中

在您的情况下,您正在传递一个包含引用的对象

<ScienceBehind
  ref={refObject} // expects a ref
/>

如果你想在组件中传递多个引用,我建议你应该这样做

<ScienceBehind
  ref={refObject.scienceBehindRef} // or just pass scienceBehindRef directly
  otherRefs={refObject}
/>

关于javascript - 如何在React中使用forwardRef输入多个引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77002131/

相关文章:

node.js - Nestjs:导入模块未定义,但可以导入模块中的方法和函数

javascript - 如何使用 html、css、bootstrap 在下拉列表中创建事件元素

c# - 窗口点打开方法出现下载 csv 文件时页面无法显示的问题

reactjs - 我正在使用react-tinymce,它的 onChange 属性无法正常工作,它只调用几个事件,我想在 onKeyup 事件上调用它

javascript - 在 reactjs 中处理多个 ajax 调用

typescript - 在 &lt;script setup> 中出现不当警告时如何正确配置 ESLint?

typescript - typescript 输入 {[key : string]: any}

JavaScript 正则表达式帮助

javascript - Angular 选择框在 mozilla、Internet Explorer (bootstrap-select) 中不显示

javascript - 进行 ajax 调用后如何呈现结果?