Перемещение значений с одного экрана на другой в собственной реакции ERROR: undefined не является объектом (оценка 'route.params.message') - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь перейти от одного экрана к другому в режиме «Реагировать нативно», перенося значение с одного экрана на другой, однако я получаю вышеуказанную ошибку. В идеале я хотел бы отправить значение из плоского списка, я пытаюсь получить интерактивный плоский список, который переносит параметр из выбранной строки на другой экран.

// index. js

import React from 'react';
import { StyleSheet, Button, Text, View, FlatList, TouchableHighlight } from 'react-native';

const ComponentsScreen = ({ navigation }) => {

  //example for detail scree
  return (
    <View>
    <FlatList
           data={[
             { key: 'Task 1' },
             { key: 'Task 2' },
             { key: 'Task 3' },
             { key: 'Task 4' },
             { key: 'Task 5' },
           ]}
           renderItem={({ item }) => {
               return (
                 <TouchableHighlight
                        onPress={() =>
                        navigation.navigate('Next', { message: 'hello from screen 1' })}
                 >
                      <Text >{item.key}</Text>
                 </TouchableHighlight>
               );
             }
           }

    />

    <Button
        onPress={() => navigation.navigate('NextScreen')}
        title="Go to ImageScreen"
    />
    </View>
  );
};
const styles = StyleSheet.create({
textStyle: {
  fontSize: 30
}
});

export default ComponentsScreen;

// NextScreen. js

  import React from 'react';
import { Text, View } from 'react-native';

//example for detail screen
const NextScreen = (route) => {
const { message } = route.params;

    return (
        <View>
          <Text>message: {JSON.stringify(message)}</Text>
        </View>
    );
};

export default NextScreen;

app. js

import React, { Component } from 'react';
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import Index from './screens/Index';
import NextScreen from './screens/NextScreen';


const navigator = createStackNavigator({
  Home: Index,
  Next: NextScreen
},
{
  initialRouteName: 'Home',
  defaultNavigationOptions: {
    title: 'App'
  }
}
);

export default createAppContainer(navigator);

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

попробуйте использовать encodeURIComponent (this.props.navigation.getParam ('message') или encodeURIComponent (this.props.navigation.Param ('message');

0 голосов
/ 13 февраля 2020

Если вы хотите получить параметр для одного экрана на другой, вам нужно использовать функцию getparam, например: const message = navigation.getParam('message');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...