2017-02-17 5 views
0

私のアプリケーションには2つの反応するネイティブコンポーネントがあります.1つは、ユーザーがフォームの入力を完了したときに押された「完了」ボタンを持つツールバーです。
もう1つは、データを取得する必要があるフォーム自体です。
ユーザーが[完了]をクリックすると、パラメータを含む投稿要求が送信されますが、データを取得するためのきれいな方法が見つかりません。
これにはどのようなベストプラクティスがありますか?

マイツールバー:私が行っボタン持つツールバーコンポーネントで異なるコンポーネントからTextInput値を取得する

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

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

とテキスト入力の一つは、次のとおりです。

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

答えて

3

使用state。ビューをモデル=>(状態)にバインドする必要があります。より良いガイドのためにコードを追加してください。

を押すと、新たなキャラクターがonChangeText

例を使用して、あなたの状態で保存される必要があるたび:

あなたは Doneボタンで押し
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} 
     /> 
    ); 
    } 
} 

TextInput値は詳細情報についてはthis.state.text

に保存されます:https://facebook.github.io/react-native/docs/textinput.html

私はあなたの主な問題は、あなたが反応するドキュメント

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

で状態の詳細を読む必要があるということだと思いますあなたは状態を設定する必要があります。 setStateではなく、this.state.data.price = textを使用してください。状態は複数のキーを持つオブジェクトです。必要に応じてdata内の1つの内部キーを変更する必要があります。dataキーをすべて変更して置き換える必要があります。

例:あなたが何かを行う必要があり、データを修正する必要がある場合は、コンストラクタで

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

を宣言します。

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

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

他のコンポーネントから状態を取得するにはどうすればよいですか?私は小道具としてそれを渡す必要がありますか? –

+0

reduxを使用している場合は、減速機に保存して、他の場面で同じ減速機を使用するだけです。反応のみを使用する場合は、それを支柱として渡します。ちょうどあなたが – jose920405

+0

と言ったように私はそれを試して、状態が静的であると思われて変更されません –

関連する問題