React 导航焦点事件监听器返回旧状态

Nip*_*pek 2 reactjs react-native react-navigation react-hooks react-navigation-v5

旧值在焦点事件侦听器内返回

如何在事件侦听器中获取当前状态/值,因为它当前返回旧值

  const [organizationName, setOrganizationName] = React.useState('');

      React.useEffect(() => {
        const unsubscribeNavigationFocus = props.navigation.addListener(
          'focus',
          async () => {
        try {     
          console.log(organizationName, 'OLD VALUE');
        
    
          // }
        } catch (error) {
          console.log('inside error');
          console.log(error);
    
        } finally {
    
        }
      }
        );
    
        return unsubscribeNavigationFocus;
      }, [props.navigation]);
Run Code Online (Sandbox Code Playgroud)

@react-navigation/native:“5.8.10”,react”:“16.13.1”,react-native:“0.63.4”,

sat*_*164 8

您需要将您的状态添加到依赖项数组中

const [organizationName, setOrganizationName] = React.useState('');

React.useEffect(() => {
  const unsubscribeNavigationFocus = props.navigation.addListener(
    'focus',
    async () => {
      try {
        console.log(organizationName, 'OLD VALUE');

        // }
      } catch (error) {
        console.log('inside error');
        console.log(error);
      } finally {
      }
    }
  );

  return unsubscribeNavigationFocus;
}, [props.navigation, organizationName]);
Run Code Online (Sandbox Code Playgroud)

使用 React 的官方 ESLint 插件来捕获此类问题https://www.npmjs.com/package/eslint-plugin-react-hooks