我试图根据键盘是否打开来显示一个组件。我很难理解为什么我最终会出现一个无休止的循环。这是我的代码。
const [isKeyboardOpen, setIsKeyboardOpen] = useState(true);
useEffect(() => {
Keyboard.addListener("keyboardDidShow", _keyboardDidShow);
Keyboard.addListener("keyboardDidHide", _keyboardDidHide);
// cleanup function
return () => {
console.log('cleanup')
Keyboard.removeListener("keyboardDidShow", _keyboardDidShow);
Keyboard.removeListener("keyboardDidHide", _keyboardDidHide);
};
}, []);
const _keyboardDidShow = () => {
console.log('opened')
setIsKeyboardOpen(true);
};
const _keyboardDidHide = () => {
console.log('closed')
setIsKeyboardOpen(false);
};
请帮助我
我希望这能解决你的问题
const [isKeyboardOpen, setIsKeyboardOpen] = useState(true);
useEffect(() => {
Keyboard.addListener("keyboardDidShow", () =>_keyboardDidShow());
Keyboard.addListener("keyboardDidHide", () =>_keyboardDidHide());
// cleanup function
return () => {
console.log('cleanup')
Keyboard.removeListener("keyboardDidShow",() => _keyboardDidShow());
Keyboard.removeListener("keyboardDidHide", () =>_keyboardDidHide());
};
}, []);
const _keyboardDidShow = () => {
console.log('opened')
setIsKeyboardOpen(true);
};
const _keyboardDidHide = () => {
console.log('closed')
setIsKeyboardOpen(false);
};