请帮帮我。我有TextInput
,我的问题是当我输入数值时,该值将乘以某个数字。当我输入1000
时,会将其保存为1000
状态,但会将store
保存为100
。结果不同。
<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 :(得分:1)
this.setState 本质上是异步的,因此在下一个语句中是不确定的。因此,当您记录该值时,状态可能还没有更新的值。
因此,对于确定性行为,建议您使用第二个参数(即回调)来获取正确的状态。执行setState
时会调用它。
this.setState({Amount}, () => console.log(this.state.Amount))
答案 1 :(得分:0)
我认为结果并没有什么不同,只是你的console.log
会让你感到困惑。它将打印出100
而不是1000
,因为您正在设置新状态的函数内执行控制台日志。尝试在其他地方进行,例如在componentWillReceiveProps
或componentWillUpdate
,您会看到它没问题。
希望这有帮助。