Как передать значения другому компоненту в React-Native-Router-Flux?

Мой код:

...
<Router>
 <Scene key="com1" component={Com1} initial/>
<Scene key="com2" component={Com2}/>
</Router>
...
com1.js
...
onPress={Actions.com2}

Я изменил com1 на com2.

Но мне нужно передать значения для поля ввода Com1 в Com2.

Как я могу это сделать?


person Eric Chan    schedule 21.09.2016    source источник


Ответы (5)


Вы можете передавать данные так:

Actions.com2 ({text: 'Hello World'})

Вы можете восстановить свои данные в com2 следующим образом:

this.props.text

Вы можете перейти к следующему руководству для получения дополнительной информации:

https://github.com/aksonov/react-native-router-flux/blob/master/docs/v3/MINI_TUTORIAL.md

person Alexandre Teixeira    schedule 21.09.2016
comment
Большое Вам спасибо - person Eric Chan; 21.09.2016
comment
@achu, ты тоже пользуешься Redux? - person Eric Chan; 22.03.2018

В дополнение к этому (и для тех, кто в комментариях сказал, что это не сработало), вы можете попробовать ниже. Когда вы пройдете

Actions.com2({text : 'Hello World'});

Com2 должен пройти 'props'

const Com2 = (props) => {
   return ( <View ...
    {props.text}
   ... />
);
person user2552155    schedule 26.12.2017
comment
Что, если я использую компонент на основе классов? - person naderabdalghani; 30.10.2019

Передавать данные через Вход,

   import React, { Component } from 'react';
   import { Text, View, TextInput, TouchableOpacity } from 'react-native';
   import { Actions } from 'react-native-router-flux';

   export default class Com1 extends Component {
   state = { text: '' };
      render() {
       return (
          <View>
             <TextInput
                value={this.state.text}
                onChangeText={text => this.setState({ text })}
            />
    <TouchableOpacity onPress={this.onPressNext.bind(this)}>
   <Text>Get Data</Text>
    </TouchableOpacity>
    </View>
    );
}

onPressNext() {
    Actions.Com2({text: this.state.text });
}
}

Чтобы получить ценность на второй странице

   export default class Com2 extends Component {

      render() {
         return (
        <View>
         <Text>
          {this.props.text}
         </Text>
       </View>
    );
  }
 }

Вы можете обратиться к этой ссылке: https://react-native-solutions.blogspot.com/2018/07/passing-data-between-screens-in-react.html

person Pooja Verma    schedule 12.07.2018

Используйте метод push, как показано ниже:

Actions.push('your key name',{prop you want to pass})

Он помещает сцену в стек, выполняя переход к новой сцене.

person sahil555    schedule 11.09.2019
comment
Отформатируйте свой ответ: stackoverflow.com/editing-help#code для удобства чтения. Ссылка на документ также улучшит качество вашего ответа. - person jasie; 11.09.2019

вы можете использовать действия с реквизитами

onPress={() => Actions.com2({title: 'some title'})}

а затем в com2 вы можете получить такие данные

this.props.title

или вы можете использовать свойство push

 Actions.push('com2',{title: 'some title' } );

затем извлеките его в com2, также как это

this.props.title
person Ali Mohammad    schedule 07.07.2020