Efo*_*osa 5 reactjs react-native
我的导航器在模式内有不同的屏幕。要关闭模态框,需要按下按钮来激活 setState 函数。现在的问题是关闭整个模式的按钮位于堆栈屏幕之一内。请问我如何将该函数作为道具从父级传递到屏幕。下面是我的代码的摘要。谢谢。
//Parent.js
const [state, setState] = useState(false)
<Stack.Navigator
initialRouteName="Screen1"
screenOptions={{
headerShown: false
}}
setState={setState}
>
<Stack.Screen name="Screen1" component={Screen1} />
<Stack.Screen name="Screen2" component={Screen2} />
</Stack.Navigator>
Run Code Online (Sandbox Code Playgroud)
//屏幕1.js
export default Screen1 = ({setState})=>{
return (
<View>
<Button title={Press me} onPress={()=>{
setState(false)}} />
</view>
)
}
Run Code Online (Sandbox Code Playgroud)
您可以将其作为初始参数传递,如下所示
<Stack.Screen
name="Home"
component={HomeScreen}
initialParams={{ setState: setState }}
/>
Run Code Online (Sandbox Code Playgroud)
并像下面这样访问它
function HomeScreen({ navigation, route }) {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Button
title="setState"
onPress={() => route.params.setState(false)}
/>
</View>
);
}
Run Code Online (Sandbox Code Playgroud)
但对于复杂的场景,最好考虑基于上下文的实现。
| 归档时间: |
|
| 查看次数: |
6743 次 |
| 最近记录: |