我正在尝试创建一个类似
的货币输入" $00.00"
然后当你开始输入时,它首先键入美分,然后转到美元(即首先更新右侧数字),例如
" $00.50"
到目前为止,我实现了它,用户在一个框中键入,并且正确格式化的输出显示在第二个框中。
代码:
constructor(props) {
super(props);
this.state = {
amount: '',
};
}
formatValue(value) {
return accounting.formatMoney(parseFloat(value) / 100, "$ ");
}
render() {
return (
<ScrollView>
<Text style={styles.text}> Enter the Amount to be payed</Text>
<TextInput
onChangeText={(amount) => this.setState({amount})}>
</TextInput>
<TextInput
onChangeText = {amount => this.setState({amount})}
value={this.formatValue(this.state.amount)}>
</TextInput>
</ScrollView>
);
}
但是,我希望货币格式应用于用户输入的同一个框。我尝试过这样的事情:
<TextInput
onChangeText={(amount) => this.setState({amount})}
value = {this.formatValue(this.state.amount)}>
</TextInput>
但这只是将输入设置为零,并且无法更改。我显然不能正确理解这一点。
有没有人对此有任何见解?
答案 0 :(得分:1)
也许这个包可以帮到你。它允许您将更改值存储在状态中。
https://www.npmjs.com/package/react-currency-input
或者既然你只想屏蔽输入而不做任何突变/转换到输入,你当然可以做这样的事情;
答案 1 :(得分:1)
我需要在最近的项目中执行此操作,最终我将其作为npm软件包发布。
https://github.com/wwdrew/react-native-numeric-textinput
它使用Intl NumberFormat来格式化货币和数字,因此应该适用于您想扔给它的任何货币。