useState 不是 useEffect 内部的函数

时间:2021-02-16 14:01:30

标签: react-native react-hooks

我是本机反应的新手。我正在尝试使用状态和效果挂钩。

const {isKeyboardOpen, setIsKeyboardOpen} = useState(false)

useEffect(() => {
    const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', () => setIsKeyboardOpen(true))
    const keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', () => setIsKeyboardOpen(false))

    return () => {
        keyboardDidShowListener.remove()
        keyboardDidHideListener.remove()
    }
}, [])

但是会报错

<块引用>

setIsKeyboardOpen 不是函数。

我是否不允许在效果挂钩内使用状态挂钩?enter image description here

1 个答案:

答案 0 :(得分:1)

嗨,我在我的代码中使用了它,但没有收到任何错误。请检查您的代码-

import React, {useState, useEffect} from 'react';
import {Platform, Switch, Keyboard} from 'react-native';
import PropTypes from 'prop-types';

const SwitchComponent = (props) => {
 const [isEnabled, setIsEnabled] = useState(false);

  useEffect(() => {
    const keyboardDidShowListener = Keyboard.addListener(
      'keyboardDidShow',
      () => setIsEnabled(true),
    );
    const keyboardDidHideListener = Keyboard.addListener(
      'keyboardDidHide',
      () => setIsEnabled(false),
    );

return () => {
  keyboardDidShowListener.remove();
  keyboardDidHideListener.remove();
 };
}, []);

return (
<Switch/>
 );
};

export default SwitchComponent;