2017-05-10 5 views
1

In reaktion native app habe ich 2 Seiten. Wenn ich einen Redox-Shop mit Daten auf der 2-Seite hochlade, gehe zurück zur 1-Seite - wie kann ich mit den hochgeladenen Daten von der 2-Seite auf den Laden zugreifen? Gibt es eine Möglichkeit, auf den Store mit den Daten aller reaktionsfähigen Seiten zuzugreifen? Vielleicht simoke Beispiel oder wo zu lesen? DankWie Redux-Speicher in reagieren native zwischen Seiten übergeben?

1page.js 
    class ScreenHome extends Component{ 

     static navigationOptions = { 
      title: 'ScreenHome', 
     }; 
     constructor(props){ 
      super(props) 
      console.log("PROPS: ",props); 
     } 
     render() { 
      const { navigate } = this.props.navigation; 
      return (
       <View> 
        <Button 
         title="Go to load data page" 
         onPress={() => navigate('New', { name: 'Jane' })} 
        /> 
        <Button 
         title="Get redux data" 
         onPress={() => {console.log(this.props)}} 
        /> 
       </View> 
      ); 
     } 
    } 

    class ScreenRegister extends Component{ 
     static navigationOptions = { 
      title: 'ScreenRegister', 
     }; 
     render(){ 
      return <Text>ScreenRegister</Text> 
     } 
    } 
    const MainScreenNavigator = DrawerNavigator({ 
     Recent: { 
      screen: ScreenHome 
     }, 
     All: { 
      screen: ScreenRegister 
     }, 
    }); 
    export default SimpleApp = StackNavigator({ 
     Home: { 
      screen: MainScreenNavigator 
     }, 
     Chat: { 
      screen: ScreenHome 
     }, 
     New: { 
      screen: testScreen 
     } 
    }); 
    const mapStateToProps = (state) => { 
    const {items, isFetching, done} = state.myTestData 
    return {testScreen:{items, isFetching, done}}; 
} 

const mapDispatchToProps = (dispatch) => { 
    return { 
     getNewItems:() => { 
      dispatch(fetchData()); 
     } 
    } 
} 

export default someTest = connect(
    mapStateToProps, 
    mapDispatchToProps 
)(SimpleApp) 



    2page.js 
     class testScreen extends Component{ 
      static navigationOptions = { 
       title: 'testScreen.js', 
      }; 


      _reduxStuff =() => { 
       this.props.getNewItems(); 
      } 
      render() { 
       const { navigate } = this.props.navigation; 
       const {done, items, isFetching} = this.props.testScreen; 
       return (
        <View> 
         <Text>Some new screen</Text> 
         <Button 
          title="Load Data" 
          onPress={() => this._reduxStuff()} 
         /> 
        </View> 
       ); 
      } 
     } 

     const mapStateToProps = (state) => { 
      const {items, isFetching, done} = state.myTestData 
      return {testScreen:{items, isFetching, done}}; 
     } 

     const mapDispatchToProps = (dispatch) => { 
      return { 
        getNewItems:() => { 
         dispatch(fetchData()); 
        } 
      } 
     } 

     export default FilterLink = connect(
      mapStateToProps, 
      mapDispatchToProps 
     )(testScreen) 

Antwort

2

Es sollte ein Behälter für jede Seite, ein Speicher für Daten, die Sie auf sich ändernde diesen Speicher zwischen den Seiten und Aktionen zugreifen möchten sein. Wenn Sie mapStateToProps verwenden, können Sie diesen Speicher an den Container der Seite übergeben. Sie können ein gutes Beispiel in here finden.

+0

Danke. Ich habe einen Verbindungscontainer für jede Seite hinzugefügt, aber nicht meinen Laden auf der ersten Seite, aber alles ist auf den nächsten Seiten in Ordnung. Gibt es Probleme mit dem StackNavigator und Redux? – SERG

+0

Es gibt kein Problem. Vielleicht geht es um Ihren Code in Container oder Reducer. Überprüfen Sie, ob der Container den Status "Geschäft" erhält oder nicht. Wenn es nicht Überprüfer ist. –

1

Auf Ihrem ersten Container müssen Sie Ihre asynchronen Anrufe tätigen, um Ihr Geschäft zu füllen.

Sie können einen Versand auf Ihrem componentWillMount() tun und füllen Sie Ihren Laden mit den empfangenen Daten.

Verwandte Themen