2017-07-05 113 views
0

請幫助我我有一個TextInput,我的問題是當我鍵入數值時,該值將與一些數字相乘。當我輸入1000這將存儲在1000狀態,但它存儲爲100。結果將不同。TextInput OnChange in React native

<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讓你感到困惑。它會打印出100而不是1000,因爲你正在設置新狀態的函數內進行控制檯日誌。嘗試在其他地方做到這一點,例如在componentWillReceiveProps或componentWillUpdate中,你會看到沒關係。

希望這會有所幫助。

1

this.setState本質上是異步的,因此在下一個語句中是非確定性的。因此,當您記錄該值時,它可能沒有狀態中的最新值。 因此對於確定性行爲,建議您使用第二個參數,它是回調來獲取正確的狀態,並在執行setState時調用。

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

感謝您現在完成了這項工作。 – saiRam89

相關問題