react-native-router-flux(基础内容)

react-native-router-flux

1.react-native-router-flux是一个第三方的路由组件,目前的最新V4版本已经基于react-navigation实现。

2.react-native-router-flux包含了官方推荐react-navigation一些没有实现的功能,如:modal,refresh等。

完整demo:https://github.com/lemonzwt/react-native-demo

 

Available imports

  • Router
  • Scene
  • Tabs
  • Tabbed Scene
  • Drawer
  • Modal
  • Lightbox
  • Actions
  • ActionConst

Router:

PropertyTypeDefaultDescription
children required页面根组件
wrapBy  Function 允许集成诸如Redux(connect)和Mobx(observer)之类的状态管理方案
sceneStyleStyle 适用于所有场景的Style(可选)
backAndroidHandlerFunction 允许在Android中自定义控制返回按钮(可选)

 

Scene:

此路由器的最重要的组件, 所有 <Scene> 组件必须要有一个唯一的 key。父节点<Scene>不能将component作为prop,因为它将作为其子节点的组件。

PropertyTypeDefaultDescription
key      stringrequired将用于标识页面,例如Actions.name(params)。必须是独一无二的
componentReact.Componentsemi-required要显示的组件,定义嵌套时不需要Scene,参见示例。
back    booleanfalse如果是true,则显示后退按钮,而不是由上层容器定义的左侧/drawer按钮。
backButtonImagestring 返回按钮的图片
backButtonTintColorstring 后退按钮色调
init    booleanfalsetrue不显示后腿按钮
clone    booleanfalse标有clone的场景将被视为模板,并在被推送时克隆到当前场景的父节点中。详情请参见示例
contentComponentReact.Component 用于呈现抽屉内容的组件(例如导航)
drawer    booleanfalse载入DrawerNavigator内的子页面
failureFunction 如果on返回一个“falsey”值,那么failure将被调用。
backTitlestring 指定场景的后退按钮标题
backButtonTextStyleStyle 后退按钮的样式
rightTitlestring 导航右侧按钮的标题
headerModestringfloat指定标题应该如何呈现:(float渲染单个标题,保持在顶部,动画随着屏幕的变化,这是iOS上的常见样式。)screen(每个屏幕都有一个标题,并且标题淡入,与屏幕一起出现,这是Android上的常见模式)如果为none(不会显示标题)
hideNavBar    booleanfalse隐藏导航栏
hideTabBar    booleanfalse隐藏标签栏(仅适用于拥有tabs指定的场景)
hideBackImage    booleanfalse隐藏返回图片
initial  booleanfalse设置为true后,会默认显示该页面
leftButtonImageImage 替换左侧按钮图片
leftButtonTextStyleStyle 左侧按钮的文字样式
leftButtonStyleStyle 左侧按钮样式
leftButtonIconStyleStyle 左侧按钮icon样式
modal    booleanfalse将场景容器定义为modal,即所有子场景都将从底部弹起到顶部。它仅适用于containers(与v3版本的语法不同)
navBarReact.Component 可以使用自定义的React组件来定义导航栏
navBarButtonColorstring 设置导航栏返回按钮的颜色
navigationBarStyle    Style 导航栏的样式
navigationBarTitleImageObject 导航栏中的图像中覆盖title的Image
navigationBarTitleImageStyleobject navigationBarTitleImage的样式
navTransparent    booleanfalse导航栏是否透明
onFunction 又名 onEnter
onBackFunction 返回按钮事件
onEnterFunction 当Scene要被跳转时调用。props将被作为参数提供。只支持定义了'component'的场景。
onExitFunction Scene要跳转离开时调用。只支持定义了'component'的场景。
onLeftFunction 当导航栏左侧按钮被点击时调用。
onRightFunction 当导航右侧按钮被点击时调用。
renderTitleReact.Component 使用React组件显示导航栏的title
renderLeftButtonReact.Component 使用React组件显示导航栏的左侧按钮。
renderRightButtonReact.Component 使用React组件显示导航栏的右侧按钮
renderBackButtonReact.Component 使用React组件显示导航栏的返回按钮。
rightButtonImageImage 设置右侧按钮的图片。
rightButtonTextStyleStyle 右侧按钮文字的样式
successFunction 如果on返回一个"真实"的值,那么success将被调用。
tabs    booleanfalse将子场景加载为TabNavigator。其他标签导航器属性也是适用的。
titlestring 要显示在导航栏中心的文本。
titleStyleStyle title的样式。
type  stringpush可选的导航操作。你可以使用replace来替换此场景中的当前场景
all other props  此处未列出的其他属性将转交给Scene的component

 

Tabs (<Tabs> or <Scene tabs>)

标签栏组件。
你可以使用<Scene>中的所有props来作为<Tabs>的属性。 如果要使用该组件需要设置 <Scene tabs={true}>。

PropertyTypeDefaultDescription
wrap    booleantrue自动使用自己的导航栏包装每个场景(如果不是另一个容器)。
activeBackgroundColorstring 指定焦点的选项卡的选中背景颜色。
activeTintColor    string 指定标签栏图标的选中色调颜色。
inactiveBackgroundColorstring 指定非焦点的选项卡的未选中背景颜色。
inactiveTintColor    string 指定标签栏图标的未选中色调颜色。
labelStyleobject 设置tabbar上文字的样式。
lazy    booleanfalse在选项卡处于活动状态之前,不会渲染选项卡场景(推荐设置成true)。
tabBarComponentReact.Component 使用React组件以自定义标签栏
tabBarPosition    string 指定标签栏位置。iOS上默认为bottom,安卓上是top。
tabBarStyleobject 标签栏的样式。
tabStyleobject 单个选项卡的样式。
showLabel    booleantrue是否显示标签栏文字。
swipeEnabled    booleanfalse是否可以滑动选项卡。
tabBarOnPress    function 自定义tabbar点击事件。
backToInitial    booleanfalse如果选项卡图标被点击,返回到默认选项卡。

 

Stack (<Stack>)

将场景组合在一起的组件,用于自己的基于堆栈实现的导航。使用它将为此堆栈创建一个单独的navigator,因此,除非您添加hideNavBar,否则将会出现两个导航条。

Tab Scene (child <Scene> within Tabs)

用于实现Tabs的效果展示,可以自定义icon和label。

PropertyTypeDefaultDescription
iconcomponentundefined作为选项卡图标放置的React Native组件。
tabBarLabelstring tabbar上的文字。

Drawer (<Drawer> or <Scene drawer>)

用于实现抽屉的效果,如果要使用该组件需要设置 <drawer tabs={true}>。

PropertyTypeDefaultDescription
drawerImageImage 替换抽屉'hamburger'图标,你必须把它与drawer一起设置。
drawerIconReact.Component 用于抽屉'hamburger'图标的任意组件,您必须将其与drawer道具一起设置。
hideDrawerButtonbooleanfalse是否显示drawerImage或者drawerIcon。
drawerPositionstringleft抽屉是在右边还是左边。可选属性right或left。
drawerWidthnumber 抽屉的宽度(以像素为单位)(可选)。

 

Modals (<Modal> or <Scene modal>)

想要实现模态,您必须将其<Modal>作为您Router的根场景。在Modal将正常呈现第一个场景(应该是你真正的根场景),它将渲染第一个元素作为正常场景,其他所有元素作为弹出窗口(当它们 被push)。

示例:在下面的示例中,root场景嵌套在<Modal>中,因为它是第一个嵌套Scene,所以它将正常呈现。如果要push到statusModal,errorModal或者loginModal,他们将呈现为Modal,默认情况下会从屏幕底部向上弹出。重要的是要注意,目前Modal不允许透明的背景。

复制代码
//... import components
<Router>
  <Modal>
    <Scene key="root">
      <Scene key="screen1" initial={true} component={Screen1} />
      <Scene key="screen2" component={Screen2} />
    </Scene>
    <Scene key="statusModal" component={StatusModal} />
    <Scene key="errorModal" component={ErrorModal} />
    <Scene key="loginModal" component={LoginModal} />
  </Modal>
</Router>
复制代码

Lightbox (<Lightbox>)

Lightbox是用于将组件渲染在当前组件上Scene的组件 。与Modal不同,它将允许调整大小和背景的透明度。

示例:
在下面的示例中,root场景嵌套在中<Lightbox>,因为它是第一个嵌套Scene,所以它将正常呈现。如果要push到loginLightbox,他们将呈现为Lightbox,默认情况下将放置在当前场景的顶部,允许透明的背景。

复制代码
//... import components
<Router>
  <Lightbox>
    <Scene key="root">
      <Scene key="screen1" initial={true} component={Screen1} />
      <Scene key="screen2" component={Screen2} />
    </Scene>

    {/* Lightbox components will lay over the screen, allowing transparency*/}
    <Scene key="loginLightbox" component={loginLightbox} />
  </Lightbox>
</Router>
复制代码

Actions

该对象的主要工具是为您的应用程序提供导航功能。 假设您的Router和Scenes配置正确,请使用下列属性在场景之间导航。 有些提供添加的功能,将React道具传递到导航场景。

这些可以直接使用,例如,Actions.pop()将在源代码中实现的操作,或者,您可以在场景类型中设置这些常量,当您执行Actions.main()时,它将根据您的场景类型或默认值来执行动作。

PropertyTypeParametersDescription
[key]FunctionObjectActions将'自动'使用路由器中的场景key进行导航。如果需要跳转页面,可以直接使用Actions.key()或Actions[key].call()。
currentSceneString 返回当前活动的场景。
jumpFunction(sceneKey: String, props: Object)用于切换到新选项卡。
popFunction 回到上一个页面。
popToFunction(sceneKey: String, props: Object)返回到指定的页面。
pushFunction(sceneKey: String, props: Object)跳转到新页面。
refreshFunction(props: Object)从堆栈中弹出当前场景,并将新场景推送到导航堆栈。没有过度动画。
replaceFunction(sceneKey: String, props: Object)替换当前场景,没有动画。
resetFunction(sceneKey: String, props: Object)清除路由堆栈并将场景推入第一个索引. 没有过渡动画。
drawerOpenFunction 如果可用,打开Drawer。
drawerCloseFunction 如果可用,关闭Drawer。

 

ActionConst

键入常量以确定Scene转换,这些是优先于手动键入其值,因为项目更新时可能会发生更改。

PropertyTypeValueShorthand
ActionConst.JUMPstring'REACT_NATIVE_ROUTER_FLUX_JUMP'jump
ActionConst.PUSHstring'REACT_NATIVE_ROUTER_FLUX_PUSH'push
ActionConst.PUSH_OR_POPstring'REACT_NATIVE_ROUTER_FLUX_PUSH_OR_POP'push
ActionConst.REPLACEstring'REACT_NATIVE_ROUTER_FLUX_REPLACE'replace
ActionConst.BACKstring'REACT_NATIVE_ROUTER_FLUX_BACK'pop
ActionConst.BACK_ACTIONstring'REACT_NATIVE_ROUTER_FLUX_BACK_ACTION'pop
ActionConst.POP_TOstring'REACT_NATIVE_ROUTER_FLUX_POP_TO'popTo
ActionConst.REFRESHstring'REACT_NATIVE_ROUTER_FLUX_REFRESH'refresh
ActionConst.RESETstring'REACT_NATIVE_ROUTER_FLUX_RESET'reset
ActionConst.FOCUSstring'REACT_NATIVE_ROUTER_FLUX_FOCUS'N/A
ActionConst.BLURstring'REACT_NATIVE_ROUTER_FLUX_BLUR'N/A
ActionConst.ANDROID_BACKstring'REACT_NATIVE_ROUTER_FLUX_ANDROID_BACK'N/A

转载于:https://www.cnblogs.com/cui-cui/p/8427541.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
react-native-redux-router是一个用于在React Native应用中管理路由和状态的库。它结合了React Native、Redux和React Navigation,提供了一种方便的方式来处理应用程序的导航和状态管理。 下面是一个简单的示例,演示了如何在React Native应用中使用react-native-redux-router: 1. 首先,安装所需的依赖项。在终端中运行以下命令: ```shell npm install react-native react-redux redux react-navigation react-native-router-flux --save ``` 2. 创建一个Redux store,并将其与React Native应用程序的根组件连接起来。在App.js文件中,添加以下代码: ```javascript import React from 'react'; import { Provider } from 'react-redux'; import { createStore } from 'redux'; import rootReducer from './reducers'; import AppNavigator from './navigation/AppNavigator'; const store = createStore(rootReducer); export default function App() { return ( <Provider store={store}> <AppNavigator /> </Provider> ); } ``` 3. 创建一个导航器组件,并定义应用程序的导航结构。在navigation/AppNavigator.js文件中,添加以下代码: ```javascript import { createAppContainer } from 'react-navigation'; import { createStackNavigator } from 'react-navigation-stack'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import { Actions } from 'react-native-router-flux'; import HomeScreen from '../screens/HomeScreen'; import DetailsScreen from '../screens/DetailsScreen'; const MainNavigator = createStackNavigator({ Home: { screen: HomeScreen }, Details: { screen: DetailsScreen }, }); const AppNavigator = createAppContainer(MainNavigator); const mapStateToProps = state => ({ // 将Redux状态映射到导航器组件的props中 }); const mapDispatchToProps = dispatch => bindActionCreators(Actions, dispatch); export default connect(mapStateToProps, mapDispatchToProps)(AppNavigator); ``` 4. 创建屏幕组件,并在其中使用导航和Redux状态。在screens/HomeScreen.js文件中,添加以下代码: ```javascript import React from 'react'; import { View, Text, Button } from 'react-native'; import { Actions } from 'react-native-router-flux'; const HomeScreen = () => { return ( <View> <Text>Welcome to the Home Screen!</Text> <Button title="Go to Details" onPress={() => Actions.details()} /> </View> ); } export default HomeScreen; ``` 5. 创建其他屏幕组件,并在其中使用导航和Redux状态。在screens/DetailsScreen.js文件中,添加以下代码: ```javascript import React from 'react'; import { View, Text, Button } from 'react-native'; import { Actions } from 'react-native-router-flux'; const DetailsScreen = () => { return ( <View> <Text>Welcome to the Details Screen!</Text> <Button title="Go back" onPress={() => Actions.pop()} /> </View> ); } export default DetailsScreen; ``` 这是一个简单的示例,演示了如何在React Native应用中使用react-native-redux-router来管理路由和状态。你可以根据自己的需求进行扩展和定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值