RN navigation(三)

上文提到过的path参数用来做deeplink使用的 ,本文就来讲解一下具体的操作方式
先贴代码:
const App = StackNavigator({
ReactNavigation:{screen:ReactNavigation,navigationOptions:{header:null}},
Main: {
screen: MainScreen,
path:'kingdom/:DeepLinkUser'
},
Profile: {screen: ProfileScreen},
},
{
initialRouteName:'ReactNavigation',
initialRouteParams :{
AppName:'KingdomYrt'
},
headerMode:'screen',
transitionConfig: (() => ({
screenInterpolator: CardStackStyleInterpolator.forHorizontal,
}))
});

const MainApp = () => //设置 URL's Schema,和 Host
uriPrefix={'kingdomYrt://kingdomYrt/'}
onNavigationStateChange={(preState, newState, action) => {
console.log('preState:' + JSON.stringify(preState)
+ ',newState:' + JSON.stringify(newState) + ',action:' + JSON.stringify(action));
}}/>
然后在AndroidMainfest中设置
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize">






android:host="kingdomYrt" />


我们设置是 ,这句代码
解释一下几个关键点
1.要在Android mainfest中设置scheme和host
2.要在StackNavigator生成变量App中设置属性uriPrefix,这是最新的处理方式,不再支持以前直接在StackNavigator中设置,语法:uriPrefix={'host://scheme/'}
3.在对应的screen中设置path,比如: path:'kingdom/:DeepLinkUser',这里指的是kingdom是这个screen的唯一标识,后面可以传入参数Deep Link User。
4.在控制台输入:adb shell am start -W -a android.intent.action.VIEW -d "kingdomYrt://kingdomYrt/kingdom/linjian" com.reactnavigation,就可以看到不管是有没有启动App都可以直接到达kingdom为唯一识别的Screen(Main)页面。
以上是Android的设置方式
iOS方式后续再行补充。

RN navigation(三)_第1张图片
test.gif

你可能感兴趣的:(RN navigation(三))