开发者问题收集

ReferenceError:找不到变量:False - React Native(Hookstate)

2021-06-18
1279

在我的 React Native 代码中,我一直使用 Hookstate 作为状态管理器(在本例中用于查看用户是否已登录)。虽然我的身份验证流程在点击登录按钮后确实会显示主页一秒钟,但随后会弹出错误(如标题所示)。

以下是我对 Hookstate 状态的实现:

import { createState, useState } from "@hookstate/core"

const globalIsLoggedIn = createState(false)

export function useGlobalIsLoggedIn(){
    const state = useState(globalIsLoggedIn)

    return ({
        get isLoggedInVal(){
            return state.value
        },
        setTrue(){
            state.set(true)
        },
        setFalse(){
            state.set(false)
        }
    })
}

export function accessGlobalIsLoggedIn(){
    return ({
        setTrue(){
            globalIsLoggedIn.set(true)
        },
        setFalse(){
            globalIsLoggedIn.set(false)
        }
    })
}

以下是我对 App.js 的实现:

import React from 'react';
import { SignUpScreen } from './src/SignUpScreen/signUp.js'
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import { LoginScreen } from './src/LoginScreen/login.js';
import { useGlobalIsLoggedIn, useGlobalState } from './src/loggedIn.js';
import { HomeScreen } from './src/HomeScreen/HomeScreen'

const Stack = createStackNavigator();


export default function App() {

  const isLoggedIn = useGlobalIsLoggedIn()

  return (
    <NavigationContainer>
      <Stack.Navigator headerMode="none">
        {
          isLoggedIn.isLoggedInVal ? (
            <Stack.Screen name="Home" component={HomeScreen} />
          ) : (
            <>
              <Stack.Screen name="SignIn" component={SignUpScreen} />
              <Stack.Screen name="Login" component={LoginScreen} />
            </>
          )
        }
      </Stack.Navigator>
    </NavigationContainer>
  );
}

但是,当我运行应用程序并更新全局状态(发生在不同的文件中)时,我会看到主页一秒钟,然后出现异常“ReferenceError:找不到变量:False”。

任何帮助都将不胜感激。

1个回答

Hookstate 的作者在这里。您的代码中某处有语法错误。 False (以大写 F 开头)不是 JS 中定义的变量/值,除非您自己在某处定义它(这不是一个好主意)。我没有看到您在代码示例中引用 False 的位置,因此请搜索更广泛的代码库。

Andrew
2021-06-22