我正在尝试将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 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)