2017-07-05 21 views
0

私はTextInputを手伝ってください、私の問題は、数値を入力すると、その値がいくつかの数値で乗算されることです。私が1000と入力すると、これは1000の状態で保存されますが、100として保存されます。結果は異なります。TextInput OnChange in Reactネイティブ

<TextInput 
    onChangeText={this.handle_bill_Amount} 
    style={styles.input} 
    placeholder="Amount" 
    value={this.state.Amount} 
    keyboardType = 'numeric' 
    enablesReturnKeyAutomatically={true} 
    placeholderTextColor = "#824242" 
    underlineColorAndroid="transparent"> 
</TextInput> 


    handle_bill_Amount = Amount => { 
    this.setState({ Amount}) 
    let billamt = this.state.Amount; 
    console.log(billamt); 
    } 

constructor(props) { 
    super(props); 
    this.state = { 
    Amount: '', 
    } 
    this.handle_bill_Amount = this.handle_bill_Amount.bind(this); 
} 

みんなおねがいします!

+0

これを確認してくださいhttps://snack.expo.io/rJlNjP94-。より多くの懸念がある場合は、私に知らせてください –

答えて

0

私は結果が違うとは思っていますが、それはあなたを混乱させるあなたのconsole.logです。あなたが新しい状態を設定している関数の中でコンソールログを行っているので、1000の代わりに100を表示します。それ以外の場所でやり直してください。 componentWillReceiveProps、またはcomponentWillUpdateで、あなたはそれが大丈夫だとわかります。

これが役に立ちます。

1

this.setStateは本質的に非同期であるため、次のステートメントでは非確定的です。したがって、値をロギングしているときに、状態の最新の値がない可能性があります。 確定的な振る舞いのためには、正しい状態を得るためのコールバックであり、setStateの実行時に呼び出される第2引数を使用することをお勧めします。

this.setState({Amount},() => console.log(this.state.Amount)) 
+0

これは今働いていただきありがとうございます。 – saiRam89

関連する問題