- 此问题在此处已有答案**:
Trigger child function from parent component using react hooks(2个答案)
3天前关闭。
我有一个组件,例如:
ParenComp.js
const ParentComp = (props) => {
const [isTrue, setIsTrue] = useState(false);
const setToTrue = () => {
setIsTrue(true);
};
const setToFalse = () => {
setIsTrue(false);
};
return isTrue ? (
<Text >
This is True
</Text>
) : (
<Text >
This is False
</Text>
);
};
export default ParentComp;
- 主要问题**
如何在任何其他文件(例如Login.js)的其他功能组件中使用setToTrue
和setToFalse
函数?
"我所尝试的"
我想使用另一个文件中的内部函数,我知道我不能这样导出函数:
导出常量setToTrue =()=〉{setIsTrue(真);};
^此为无效
但我尝试做的是(在ParentComp.js中)使用createRef创建一个引用,导出它,然后创建并导出两个函数,这两个函数调用内部函数,如下所示:
export const trueRef = React.createRef();
export function setToTrue() {
let ref = trueRef.current;
if (ref) {
ref.setToTrue();
}
}
export function setToFalse() {
let ref = trueRef.current;
if (ref) {
ref.setToFalse();
}
}
现在,当我想在我的(Login.js)中使用它时,我会这样做:
const Login = ({ navigation }) => {
return (
<View>
<ParentComp ref={trueRef}/>
</View>
)
}
但问题是,ref没有在这里传递给ParentComp<ParentComp ref={trueRef}/>
那么,在不使用CLass Components的情况下,如何将ref传递给函数组件以利用其中的函数呢?
1条答案
按热度按时间djp7away1#
使用带有ref转发的useImperativeHandle钩子来授予外部组件对方法的访问权限。
正如@technophyle和@Drew Reese在评论中所指出的,
useImperativeHandle
是一个转义窗口,通常用于需要直接访问DOM节点的特定情况,例如聚焦输入或滚动到某个元素。示例:
重用逻辑的一个更好的方法是创建一个封装行为的自定义钩子,并在
Login
中使用它:一个二个一个一个