Javascript 为什么ref总是空的?
我在下面有一个组件,在第一次渲染时我输入了正确的ref,但是在下一次渲染时,我总是得到null,请告诉我为什么?ref通过道具传递到输入:Javascript 为什么ref总是空的?,javascript,reactjs,Javascript,Reactjs,我在下面有一个组件,在第一次渲染时我输入了正确的ref,但是在下一次渲染时,我总是得到null,请告诉我为什么?ref通过道具传递到输入: const inputRef = useRef(null); useEffect(() => { setTimeout(() => { if (inputRef.current) { inputRef.current.focus(); } }); }, [inputRef]); render() {
const inputRef = useRef(null);
useEffect(() => {
setTimeout(() => {
if (inputRef.current) {
inputRef.current.focus();
}
});
}, [inputRef]);
render() {
return(
<div>
<FirstComponent />
{({ selectedItem, items }) => (
<SecondCompontnt
inputRef={inputRef}
items={items}
onSelect={onSelect}
value={selectedItem}
/>
)}
</div>
)
}
一旦父组件中有一个子组件的ref,则需要应用所谓的ref,如文档所述:
Ref转发是一种将Ref通过组件自动传递给其子组件的技术。对于应用程序中的大多数组件来说,这通常不是必需的
假设您在父组件中有如下内容:
const childDivRef = useRef(null);
return <>
<ChildComponent ref={childDivRef} />
</>
然后,您需要在子组件中包含以下内容:
import React, { forwardRef } from 'react';
const ChildComponent = forwardRef((props, ref) => {
return <div ref={ref} className="child-component">
<h3>Child component</h3>
</div>
})
如果您需要一个工作示例,请查找我之前制作的GitHub存储库:
我希望这有帮助 一旦父组件中有一个子组件的ref,则需要应用所谓的ref,如文档所述:
Ref转发是一种将Ref通过组件自动传递给其子组件的技术。对于应用程序中的大多数组件来说,这通常不是必需的
假设您在父组件中有如下内容:
const childDivRef = useRef(null);
return <>
<ChildComponent ref={childDivRef} />
</>
然后,您需要在子组件中包含以下内容:
import React, { forwardRef } from 'react';
const ChildComponent = forwardRef((props, ref) => {
return <div ref={ref} className="child-component">
<h3>Child component</h3>
</div>
})
如果您需要一个工作示例,请查找我之前制作的GitHub存储库:
我希望这有帮助 这是不可复制的,在您提供的代码中,inputRef的值总是为null,您给ref的值是null…这是不可复制的,inputRef的值在您提供的代码中总是为null,您给ref的值是null…非常感谢您的帮助@随时都可以。如果解决方案为您工作,请考虑接受作为您的问题的答案,谢谢!非常感谢你的帮助@随时都可以。如果解决方案为您工作,请考虑接受作为您的问题的答案,谢谢!