Javascript 由本机状态反应引起的无止境循环

Javascript 由本机状态反应引起的无止境循环,javascript,reactjs,react-native,react-hooks,react-native-ios,Javascript,Reactjs,React Native,React Hooks,React Native Ios,我试图根据键盘是否打开来显示/隐藏组件。我很难理解为什么我会以一个永无止境的循环结束。这是我的密码: const [isKeyboardOpen, setIsKeyboardOpen] = useState(true); useEffect(() => { Keyboard.addListener("keyboardDidShow", _keyboardDidShow); Keyboard.addListener("keyboardDidH

我试图根据键盘是否打开来显示/隐藏组件。我很难理解为什么我会以一个永无止境的循环结束。这是我的密码:

    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);

};

我希望这能解决你的问题

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);

};

组件中是否有其他代码?如果是这样,请发布整个组件。UseMoom而不是useEffect,并确保传递此[isKeyboardOpen]而不是空数组。组件中是否有其他代码?如果是这样,请发布整个component.usemo而不是useffect,并确保传递此[isKeyboardOpen]而不是空数组