Javascript 如果非ref对象包含在ref中,可以将其作为ref传递吗?

Javascript 如果非ref对象包含在ref中,可以将其作为ref传递吗?,javascript,reactjs,react-ref,Javascript,Reactjs,React Ref,我有一个ref,其中包含一个包含两个ref的对象: function useFocusTargets() { const from = useRef(); const to = useRef(); const focusTargets = useRef({from : from, to: to}); return focusTargets.current; } 我将两个内部参照传递给组件,以访问它们的DOM元素。它工作了,但我更改了它,使两个内部引用只是常规对象,而不是us

我有一个ref,其中包含一个包含两个ref的对象:

function useFocusTargets() {
  const from = useRef();
  const to = useRef();
  const focusTargets = useRef({from : from, to: to});  
  return focusTargets.current;
}
我将两个内部参照传递给组件,以访问它们的DOM元素。它工作了,但我更改了它,使两个内部引用只是常规对象,而不是
useRef({from:{},to:{}})
,它似乎仍然工作……但我得到了以下警告:

Unexpected ref object provided for input. Use either a ref-setter function or React.createRef().
我认为我所做的是不恰当的。但我不明白为什么。它似乎工作得很好,对我来说很有意义(
focusTargets
是一个ref,所以它被保留了,所以
{from:{},to:{}}
内部的
focusTargets
也应该被保留)


做我做过的事可以吗?如果不行,为什么?

这回答了你的问题吗?谢谢分享,单身的想法似乎真的很有用。但我觉得我的问题有点不同?我向下传递引用是因为我希望子组件将某些内容传递给父组件。由于我传递的是我的ref中的对象,我想知道这些内部对象是否必须是ref,或者它们是否可以只是普通对象。您是传递
focusTargets
(这是ref)还是
focusTargets.current
(这是普通对象)?我需要看更多的代码才能调试它。我传递focusTargets.current.to这个答案能回答你的问题吗?谢谢分享,单身的想法似乎真的很有用。但我觉得我的问题有点不同?我向下传递引用是因为我希望子组件将某些内容传递给父组件。由于我传递的是我的ref中的对象,我想知道这些内部对象是否必须是ref,或者它们是否可以只是普通对象。您是传递
focusTargets
(这是ref)还是
focusTargets.current
(这是普通对象)?我需要查看更多代码才能调试它