美文网首页
RN navigation(三)

RN navigation(三)

作者: 木中木 | 来源:发表于2017-08-13 10:35 被阅读0次

    上文提到过的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 = () => <App
    //设置 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中设置
    <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="kingdomYrt"
    android:host="kingdomYrt" />
    </intent-filter>
    </activity>
    我们设置是 <data android:scheme="kingdomYrt" 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方式后续再行补充。

    test.gif

    相关文章

      网友评论

          本文标题:RN navigation(三)

          本文链接:https://www.haomeiwen.com/subject/jyisrxtx.html