【问题标题】:How to pass params to other screen in React Native?如何将参数传递到 React Native 中的其他屏幕?
【发布时间】:2018-04-14 04:29:55
【问题描述】:

我的 React Js 技能非常基础,我想要得到的是当我点击一个类别时,我会在新屏幕中显示所选类别的帖子列表,在这种情况下是 PostsScreen。

问题是我的 itemId 为空。

我不知道我做错了什么。

类别屏幕

import React, {Component} from 'react';
import { NavigationActions, DrawerNavigator,  StackNavigator } from 'react-navigation';
import{Dimensions, Button, View, SafeAreaView, FlatList, ActivityIndicator, TouchableOpacity } from 'react-native';

export default class WGoals extends Component {
static navigationOptions = {
  title: 'Categories'
    };

navigateToScreen = (route, params) => () => {
const navigateAction = NavigationActions.navigate({
  routeName: route,
  params: params
});
this.props.navigation.dispatch(navigateAction);
}

constructor(props)
  {
super(props);
this.state = { 
isLoading: true,
  }
}

  render() {

    return (

<Container style={styles.background_general}>
                <TouchableOpacity onPress={this.navigateToScreen('PostsScreen', itemId = '1')} >
                <Text>Category 1</Text>
            </TouchableOpacity>
                <TouchableOpacity onPress={this.navigateToScreen('PostsScreen', itemId = '2')} >
                <Text>Category 2</Text>
                </TouchableOpacity>
</Container>      
    );
  }
}

帖子屏幕

import React, {Component} from 'react';
import { NavigationActions, DrawerNavigator,  StackNavigator } from 'react-navigation';
import{Dimensions, View, SafeAreaView, FlatList, ActivityIndicator } from 'react-native';

export default class Posts extends Component {
static navigationOptions = {
  title: 'Posts'
};

  render() {

    const { params } = this.props.navigation.state;
    const itemId = params ? params.itemId : null;

    return (

<Container style={styles.background_general}>

<Text>Details Screen</Text>
<Text>itemId: {JSON.stringify(itemId)}</Text>

</Container>

    );
  }
    }

【问题讨论】:

    标签: reactjs react-native react-router react-redux


    【解决方案1】:

    更改函数的参数

    this.navigateToScreen('PostsScreen', itemId = '1')
    

    this.navigateToScreen('PostsScreen', {itemId: '1'})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 2018-03-13
      相关资源
      最近更新 更多