React Navigation - Navigation Ac

2018-02-01  本文已影响58人  急眼的蜗牛

所有 Navigation Actions都会返回一个对象,可以使用navigation.dispatch()方法把对象发送到路由器。

请注意:如果你想用dispatch指定react-navigation的导航行为,你应使用react-navigation中提供的action creators。

支持以下操作:

action creator函数定义了toString()来返回action类型,这使得第三方的Redux库很容易使用,包括redux-actions和redux-saga。

Navigate

Navigate action 会使用它自己运行的结果来更新当前的状态.

疑惑

import { NavigationActions } from 'react-navigation'

const navigateAction = NavigationActions.navigate({

  routeName: 'Profile',

  params: {},

  action: NavigationActions.navigate({ routeName: 'SubProfileRoute'})
})

this.props.navigation.dispatch(navigateAction)

Reset(重置)

重置动作会删除整个导航状态,并将其替换为几个actions。

import { NavigationActions } from 'react-navigation'

const resetAction = NavigationActions.reset({
  index: 0,
  actions: [
    NavigationActions.navigate({ routeName: 'Profile'})
  ]
})
this.props.navigation.dispatch(resetAction)

怎么使用index 参数

index参数用于指定当前的路由。
eg:给定一个基本的导航和两个路由,路由的名字分别是ProfileSettings。 想把settings 路由激活为当前的路由,你可以:

import { NavigationActions } from 'react-navigation'

const resetAction = NavigationActions.reset({
  index: 1,
  actions: [
    NavigationActions.navigate({ routeName: 'Profile'}),
    NavigationActions.navigate({ routeName: 'Settings'})
  ]
})
this.props.navigation.dispatch(resetAction)

Back(返回)

返回到上一个屏幕并关闭当前屏幕。 返回动作创建者需要一个可选参数:

import { NavigationActions } from 'react-navigation'

const backAction = NavigationActions.back({
  key: 'Profile'
})
this.props.navigation.dispatch(backAction)

SetParams

当使用dispatch调用SetParams时,路由器将产生一个新的状态,改变了特定路由的参数

import { NavigationActions } from 'react-navigation'

const setParamsAction = NavigationActions.setParams({
  params: { title: 'Hello' },
  key: 'screen-123',
})
this.props.navigation.dispatch(setParamsAction)
上一篇下一篇

猜你喜欢

热点阅读