React Navigation 路由傳參的操作代碼
頁面之間傳遞參數(shù)
實現(xiàn)頁面之間傳遞參數(shù)很簡單,跟普通的 React 項目一樣,具體實例入戲:
// 傳入?yún)?shù) export default function Home(props: { navigation: any }) { return ( <View> <Text>Home</Text> <Button title="切換到詳情頁" onPress={() => props.navigation.navigate("Detail Page", { itemId: 86, otherParam: "這是傳遞過來的參數(shù)", }) } /> </View> ); } // 獲取參數(shù) export default function ReviewDetails(props: { navigation: any; route: { params: { itemId: number; otherParam: string } }; }) { return ( <View> <Text>詳情頁</Text> <Text>itemId: {props.route.params.itemId}</Text> <Text>otherParam: {props.route.params.otherParam}</Text> <Button title="切換到詳情頁" onPress={() => props.navigation.push("Detail Page")} /> <Button title="返回上一頁" onPress={() => props.navigation.goBack()} ></Button> <Button title="清除所有堆棧信息返回首頁" onPress={() => props.navigation.popToTop()} ></Button> </View> ); }
通過上述的例子可以看出我們實現(xiàn)參數(shù)的傳遞與獲取只需要兩部:
- 通過將參數(shù)放入對象中作為函數(shù)的第二個參數(shù)來將參數(shù)傳遞給路由
navigation.navigate('RouteName', { 參數(shù) })
- 讀取屏幕組件中的參數(shù):
route.params
傳遞初始參數(shù)
您可以將一些初始參數(shù)傳遞給屏幕,如果您在導航到此屏幕時未指定任何參數(shù),則將使用初始參數(shù)。它們也與您傳遞的任何參數(shù)淺層合并。初始化參數(shù)可以在 Stack.Screen 組件中使用 initialParams
屬性來實現(xiàn)。具體實例如下:
<Stack.Screen name="Detail Page" component={ReviewDetails} initialParams={{ itemId: 42 }} />
參數(shù)傳遞給上一級路由
參數(shù)不僅對于將一些數(shù)據(jù)傳遞到新屏幕有用,而且對于將數(shù)據(jù)傳遞到前一個屏幕也很有用。具體實例如下:
// 首頁(接收創(chuàng)建文章頁面回傳回來的數(shù)據(jù)) export default function Home(props: { navigation: any; route: any }) { React.useEffect(() => { if (props.route.params?.post) { console.log(props.route.params?.post); } }, [props.route.params?.post]); return ( <View> <Text>Home</Text> <Text style={{ margin: 10 }}> 添加文章頁面?zhèn)骰氐膮?shù): {props.route.params?.post} </Text> <Button title="切換到詳情頁" onPress={() => props.navigation.navigate("Detail Page", { itemId: 86, otherParam: "這是傳遞過來的參數(shù)", }) } /> <Button title="添加文章" onPress={() => props.navigation.navigate("CreateArticle")} ></Button> </View> ); } // 創(chuàng)建文章 export default function CreateArticle(props: { navigation: any; route: any }) { const [postText, setPostText] = React.useState(""); return ( <View> <TextInput multiline placeholder="What's on your mind?" style={{ height: 200, padding: 10, backgroundColor: "white" }} value={postText} onChangeText={setPostText} /> <Button title="完成" onPress={() => { props.navigation.navigate({ name: "Home Page", params: { post: postText }, merge: true, }); }} /> </View> ); }
通過上述的例子我們可以看到要把參數(shù)傳遞給上一級路由的方法跟我們普通傳遞參數(shù)的方法是一樣的。
到此這篇關(guān)于React Navigation 路由傳參的文章就介紹到這了,更多相關(guān)React 路由傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React-Native之定時器Timer的實現(xiàn)代碼
本篇文章主要介紹了React-Native之定時器Timer的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10react最流行的生態(tài)替代antdpro搭建輕量級后臺管理
這篇文章主要為大家介紹了react最流行的生態(tài)替代antdpro搭建輕量級后臺管理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08react性能優(yōu)化達到最大化的方法 immutable.js使用的必要性
這篇文章主要為大家詳細介紹了react性能優(yōu)化達到最大化的方法,一步一步優(yōu)化react性能的過程,告訴大家使用immutable.js的必要性,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03