2017-02-17 4 views
0

Ich habe 2 native Komponenten in meiner App reagieren, ist eine Symbolleiste, die eine Schaltfläche "Fertig" hat, gedrückt, wenn ein Benutzer ein Formular ausgefüllt ist.
Das andere ist die Form selbst, von wo ich die Daten bekommen muss.
Wenn der Benutzer auf "Fertig" klickt, sende ich eine Post-Anfrage mit den Parametern, aber ich finde keinen ordentlichen Weg, um die Daten zu bekommen.
Was ist die beste Vorgehensweise dafür?

Meine Symbolleiste:Get TextInput Wert von verschiedenen Komponenten

<TopToolbar text='Upload new item' 
    navigator={this.props.navigator} state={this.state} donePage={'true'}/> 

in der Symbolleiste Komponente I auf die Schaltfläche Fertig haben:

 <TouchableHighlight style={styles.done} onPress={() =>{this.state.text=this.props.state.data.price}} underlayColor='#4b50f8'> 
      <Image source={require('./Images/Path 264.png')}/> 
     </TouchableHighlight> 

und eine der Texteingaben ist:

<TextInput placeholder='Price*' style={styles.text} onChangeText={(text) => { this.state.data.price = text }}></TextInput> 

Antwort

3

Verwendung state. Sie müssen die Ansicht an das Modell binden => (state). Bitte fügen Sie Ihren Code für eine bessere Anleitung hinzu.

Jedes Mal, wenn Sie und neue Zeichen drücken müssen onChangeText

Beispiel in Ihrem Zustand gespeichert werden:

class UselessTextInput extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { text: 'Useless Placeholder' }; 
    } 

    render() { 
    return (
     <TextInput 
     style={{height: 40, borderColor: 'gray', borderWidth: 1}} 
     onChangeText={(text) => this.setState({text})} 
     value={this.state.text} 
     /> 
    ); 
    } 
} 

Wenn Sie in Done-Taste drücken. Der TextInput Wert wird in this.state.text

Für mehr Informationen gespeichert werden: https://facebook.github.io/react-native/docs/textinput.html

Ich denke, Ihr Hauptproblem ist, dass Sie in der Dokumentation reagieren mehr über die Zustände lesen müssen

https://facebook.github.io/react-native/docs/state.html

Wenn Sie müssen den Status festlegen. Sie sollten setState nicht this.state.data.price = text verwenden. Der Zustand ist ein Objekt mit mehreren Schlüsseln y Ihre Bedürfnisse ändern einen internen Schlüssel innerhalb data Sie müssen alle data Schlüssel ändern und ersetzen.

Beispiel:

In Ihrem Konstruktor deklarieren

this.state = { data: {price: 10, name: xxxx} }; 

wenn Daten ändern müssen, sollten Sie so etwas wie tun.

var dataM = this.state.data; 
dataM.price = 200 

this.setState({ data: dataM}); 
+0

und wie bekomme ich den Zustand von der anderen Komponente? Muss ich es als Requisite übergeben? –

+0

Wenn Sie Redox verwenden, müssen Sie nur im Reduzierstück sparen und den gleichen Reduzierer in Ihrer anderen Szenerie verwenden. Wenn nur react verwendet wird, übergeben Sie es einfach als Requisite. Genau wie du sagst – jose920405

+0

habe ich das versucht und der Zustand scheint statisch zu sein und ändert sich nicht –