相关疑难解决方法(0)

React-native/react-navigation:如何从`static navigationOptions`访问组件的状态?

例如,当你有一个表单组件,并且需要使用导航栏中的按钮提交组件状态的一部分时,如何处理案例?

const navBtn = (iconName, onPress) => (
  <TouchableOpacity
    onPress={onPress}
    style={styles.iconWrapper}
  >
    <Icon name={iconName} size={cs.iconSize} style={styles.icon} />
  </TouchableOpacity>
)

class ComponentName extends Component {

  static navigationOptions = {
    header: (props) => ({
      tintColor: 'white',
      style: {
        backgroundColor: cs.primaryColor
      },
      left: navBtn('clear', () => props.goBack()),
      right: navBtn('done', () => this.submitForm()), // error: this.submitForm is not a function
    }),
    title: 'Form',
  }

  constructor(props) {
    super(props);
    this.state = {
      formText: ''
    };
  }

  submitForm() {
    this.props.submitFormAction(this.state.formText)
  }

  render() {
    return (
      <View>
        ...form …
Run Code Online (Sandbox Code Playgroud)

reactjs react-native react-navigation

15
推荐指数
3
解决办法
8851
查看次数

如何在用户注销时重置TabNavigator(从其他屏幕)

这是我的项目文件层次结构

RootTabNavigator
    | AuthStackNavigator // I want to go back to this navigator
          | AuthoScreen
    | Welcome Screen
    | MainTabNavigator // I want to reset MainTabNavigator 
          | FeedStacknavigator
                   | Screen A
          | OtherStackNavigatorOne
                   | Screen E
          | OtherStackNavigatorTwo
                   | Screen D
          | MenuStackNavigator 
                   | Menuo <-I'm here and want to reset to 'MainTabNavigator' 
                             and go BACK to 'AuthScreen'
           | Screen B
                   | Screen C
Run Code Online (Sandbox Code Playgroud)

问题

用户在MenuStackNavigator和MainTabNavigator下的Menuo屏幕上.

如果用户没有令牌(当用户注销时),则用户返回到Auth Screen.

但同时我想重置MainTabNavigator.您可以卸载,执行NavigationActions.init()或其他任何操作.我更喜欢NavigationActions.init()

我只是想将MainTabNavigator设置为第一次.

如果没有令牌,我会回到Auth Screen(这是有效的)

This code if the part …
Run Code Online (Sandbox Code Playgroud)

reactjs react-native react-redux react-native-navigation react-navigation

5
推荐指数
1
解决办法
2612
查看次数

如何在反应导航中分派多个动作?

我想执行两个操作,但它不起作用。

const backAction = NavigationActions.back({
    key: null
})
const dispatchLogoutAction = NavigationActions.reset({
    index: 0,
    actions: [NavigationActions.navigate({routeName: "LoginView"})]
});
nextProps.navigation.dispatch(backAction);
nextProps.navigation.dispatch(dispatchLogoutAction);
Run Code Online (Sandbox Code Playgroud)

react-navigation除了并行列出 dispatch 语句之外,还有哪些其他方法可以调度这两个操作?

react-native redux-thunk react-navigation

5
推荐指数
0
解决办法
2564
查看次数

更改选项卡时重置导航堆栈(嵌套在TabNavigator中的StackNavigator)

我有两个StackNavigator。电影:

const MoviesStackNavigator = createStackNavigator({
  Movies: Movies,
  MovieDetails: MovieDetails,
},{
  initialRouteName: 'Movies',
})
Run Code Online (Sandbox Code Playgroud)

和演员:

const ActorsStackNavigator = createStackNavigator({
  Actors: Actors,
  ActorDetails: ActorDetails,
},{
  initialRouteName: 'Actors',
})
Run Code Online (Sandbox Code Playgroud)

我在TabNavigator中使用它们:

const RootTabs = createBottomTabNavigator({
  Movies: {
    screen: MoviesStackNavigator,
    navigationOptions: {
      tabBarLabel: 'Movies'
    }
  },
  Actors: {
    screen: ActorsStackNavigator,
    navigationOptions: {
      tabBarLabel: 'Actors'
    }
  },
})
Run Code Online (Sandbox Code Playgroud)

当用户更改选项卡时,我希望他到达该选项卡的根组件(Movies或Actors),而不是堆叠组件(MoviesDetails或ActorsDetails)。换句话说,当用户退出选项卡时,该选项卡中的StackNavigator应重置为根组件。

我的第一种方法是StackActions.reset在初始化选项卡中的根组件时尝试重置其他选项卡(用户刚刚退出),但是该库至少以这种方式阻止了导航器之间的交互。

那么,有什么想法吗?

react-navigation

1
推荐指数
1
解决办法
885
查看次数