小编pia*_*102的帖子

选项卡导航器屏幕上的 IntialParams 未定义(反应导航 v5)

我正在尝试将initialParam 属性传递到TabNavigator 屏幕。它旨在成为本地状态的登录部分,只是进行概念验证。它在堆栈导航器屏幕上运行良好,但route.params选项卡屏幕上的 未定义。我究竟做错了什么?

另外,我很确定就状态管理而言,这必须改变,但我想确保我可以简单地更改父级中的状态App并使其生效。它在堆栈屏幕上工作,这意味着我可以调用它setLoggedIn(true),它将带我到选项卡导航器。但我已经回不去了...

const Track = () => {
  return (
    <TrackStack.Navigator>
      <TrackStack.Screen
        name='TrackListScreen'
        component={TrackListScreen}
      />
      <TrackStack.Screen
        name='TrackDetailScreen'
        component={TrackDetailScreen}
      />
    </TrackStack.Navigator>
  );
};

const App = () => {
  const [loggedIn, setLoggedIn] = useState(false);

  return (
    <NavigationContainer>
      {loggedIn ? //is logged in 
        (
          <MainTab.Navigator>
            <MainTab.Screen
              name='TrackCreateScreen'
              component={TrackCreateScreen}
              initialParams={{ setLoggedIn }}
            />
            <MainTab.Screen
              name='AccountScreen'
              component={AccountScreen}
            />
            <MainTab.Screen
              name='Track'
              component={Track}
            />
          </MainTab.Navigator>
        ) : (
          <LoginStack.Navigator>
            <LoginStack.Screen
              name='SignupScreen'
              component={SignupScreen}
              initialParams={{ setLoggedIn }}
            />
            <LoginStack.Screen …
Run Code Online (Sandbox Code Playgroud)

react-native react-navigation react-navigation-v5

6
推荐指数
0
解决办法
401
查看次数

React Native 中的钩子:仅从 React 函数调用钩子

关于 React Hooks 的这一节,我真的不明白它在说什么:

仅从 React 函数调用钩子

不要从常规 JavaScript 函数调用 Hook。相反,您可以:

? 从 React 函数组件调用 Hook。

? 从自定义 Hooks 调用 Hooks(我们将在下一页了解它们)。

通过遵循此规则,您可以确保组件中的所有有状态逻辑在其源代码中都清晰可见。

仅从 React 函数组件调用 Hooks 是什么意思,React 函数与我调用的常规函数​​组件有何不同?

在我看来,它们是一样的:

const App = () => {
    useEffect(() => //do stuff);

    return (
        // return some sort of stuff here
    )
}
Run Code Online (Sandbox Code Playgroud)

我问的原因是我对钩子的 eslint 抱怨我在useState这里使用的方式:

const checkPermissions = () => { //when I change this to 'usePermissions', it works fine
  const [locPermission, setLocPermission] = useState(null); // eslint error …
Run Code Online (Sandbox Code Playgroud)

reactjs react-native react-hooks

5
推荐指数
1
解决办法
2202
查看次数