2017-10-19 8 views
0

Je voudrais setState du composant A au composant B. A et B sont différents fichiers JS. J'ai essayé d'importer B à A et accéder à la fonction à l'intérieur B. Ont également faire la fonction dans B à statique, alors seulement trouver la fonction statique aucune instance, donc je ne pouvais pas accéder this en statique.React Native - setState entre différents fichiers JS

A.js

import B from '../B'; 
class A extends React.Component { 
    ChangeBContent(){ 
     B.SetContent(); 
    } 

    render(){ 
     return(
      <View> 
       <SpeicalBtn onPress={()=> this.ChangeBContent()}/> 
      </View> 
     ); 
    } 
} 

module.exports = A; 
AppRegistry.registerComponent('myApp',() => A); 

B.js

class B extends React.Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
      content:'' 
     } 
    } 

    SetContent(){ 
     this.setState({content:'123'}); 
    } 

    render(){ 
     return(
      <View> 
       <Text>{this.state.content}</Text> 
      </View> 
     ); 
    } 
} 

module.exports = B; 
AppRegistry.registerComponent('myApp',() => B); 
+0

Vous essayez d'appeler une méthode 'static'' B.SetContent(); 'plutôt, vous devriez trouver un moyen d'obtenir une instance de' B' et d'appeler la méthode sur l'instance . – Panther

Répondre

1

Vous devriez les envelopper dans un autre composant de récipient.

ContentC.js

class ContentC extends React.Component { 
     constructor(props) { 
     super(props); 
     this.state = { 
      contentA:'', 
      contentB: '' 
     } 
    } 
    SetContentA(){ 
     this.setState({contentA:'123'}); 
    } 
    SetContentB(){ 
     this.setState({contentB:'123'}); 
    } 
    render(){ 
     return(
     <ClassA content={this.state.contentA} /> 
      <ClassB content={this.state.contentB}/> 
     ); 
     } 
    } 

Et maintenant, vous pouvez utiliser le contenu avec props.contentA et props.contentB

3

Vous pouvez faire des tours sales, mais je pense que vous aurez besoin d'approche plus propre.

C'est ici que vous utiliseriez la bibliothèque de gestion d'état, par exemple redux, vous avez un magasin global et vous répartissez les actions. Vous pouvez regarder dans ce stackoverflow post

+0

un exemple auquel je peux me référer? Je suis très nouveau et pas familier dans Redux, il suffit de lire quelques documents redux, se sentir confus. –

+0

Comment avez-vous commencé à réagir? Commencer à partir d'un kit de démarrage est préférable car vous n'aurez pas à tout configurer vous-même au début. vous pouvez aller sur le lien que j'ai posté, et travailler votre chemin, si vous êtes coincé, commentez à nouveau, et je vais vous montrer étape par étape sur la façon de configurer. –

+0

Je commence à partir de la navigation de réaction –