美文网首页
React Navigation - Navigation Ac

React Navigation - Navigation Ac

作者: 急眼的蜗牛 | 来源:发表于2018-02-01 14:46 被阅读58次

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

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

支持以下操作:

  • Navigate - 导航到其他路线
  • Reset - 用新状态替换当前状态
  • Back - 回到之前的状态
  • set Params - 为给定路线设置参数
  • init - 用于初始化状态在未定义时初始状态的时候

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

Navigate

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

  • routeName - String - 必需 - 已在应用路由器中路由名称
  • params - Object - 可选 - 参数
  • action - Object - 可选 - (高级)如果屏幕是导航器,则在子路由器中运行的子操作。 本文档中描述的任何一个操作都可以设置为子操作。

疑惑

import { NavigationActions } from 'react-navigation'

const navigateAction = NavigationActions.navigate({

  routeName: 'Profile',

  params: {},

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

this.props.navigation.dispatch(navigateAction)

Reset(重置)

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

  • index - number - 必需 - 路由数组索引。
  • actions - array - 必需 - 导航行为数组将取代导航状态。
  • key - string or null - 可选 - 如果设置,导航器key将重置。 如果为null,则根导航器将重置。
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(返回)

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

  • key - string or null - optional - 如果设置,导航将从给定的键返回。 如果为空,导航将返回到任何地方。
import { NavigationActions } from 'react-navigation'

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

SetParams

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

  • params - object - 必须 - 新的参数被合并到现有的路由参数中
  • key - string - 必需 - 应该得到新的参数的路由键
import { NavigationActions } from 'react-navigation'

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

相关文章

网友评论

      本文标题:React Navigation - Navigation Ac

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