我的状况有点怪异,我在我们的app中处理货币。在模型方面,由于不希望在服务器端处理小数点,因此在发送到服务器之前,我将货币保存为美分。但是,在视图中,我要显示的是正常货币而不是美分。
因此,我有一个输入字段,在这里我从美元中获取数据并将其更改为美分:
<input name="balance" type="number" step="0.01" min="0" placeholder="Balance in cents" onChange={this.handleUpdate} value={this.props.user.balance / 100)} />
当输入值发生变化时,我将其改回美分,然后再将其发送到上游:
handleUpdate: function(e) {
var value = e.target.value;
// changing it back from cents to dollars
value = parseFloat(value) * 100;
// save back to the parent component managing the prop
this.props.onUserUpdate(value);
}
这使我陷入僵局,我无法输入小数点“”。让我示范一下:
33
在输入框中->变为3300
父状态->返回33
组件prop中的- 一切正常
33.3
在输入框中->变为3330
父状态->返回33.3
组件prop中的状态- 一切正常
33.
在输入框中->变为3300
父状态->返回33
组件prop中的状态- 这就是问题所在
如案例3所示,用户首次输入“”。这不会转换回与“”相同的数字。
由于它是受控输入,因此基本上没有写“。”的方法。
我尝试将不受控制的元素与结合使用defaultValue
,但是在呈现组件时,数量prop尚未准备好,因此它只是空的
http://jsfiddle.net/fpbhu1hs/
使用派生值的受控输入可能会比较棘手-如果您需要能够显示无效或其他怪异的输入,那么…
始终将输入保持value
在其组件本身中state
<input value={this.state.value} onChange={this.handleUpdate} // rest as above...
得出初步value
的getInitialState()
getInitialState: function() {
return {value: this.props.user.balance / 100}
}
componentWillReceiveProps(nextProps)
检测道具的值何时从上方改变并重新推导状态值 componentWillReceiveProps: function(nextProps) {
if (this.props.user.balance != nextProps.user.balance) {
this.setState({value: nextProps.user.balance / 100})
}
}
现在,当用户输入“ 33.”时,您可以使用来存储其文字输入setState()
,然后回调到父级。
handleUpdate: function(e) {
var value = e.target.value
this.setState({value: value})
this.props.onUserUpdate(parseFloat(value) * 100)
}
如果父母通过道具传回给孩子的值没有改变(3300 == 3300
在这种情况下),则componentWillReceiveProps()
不会做任何事情。
工作片段:
<script src="http://fb.me/react-with-addons-0.12.2.js"></script>
<script src="http://fb.me/JSXTransformer-0.12.2.js"></script>
<div id="example"></div>
<script type="text/jsx;harmony=true">void function() { 'use strict';
var Parent = React.createClass({
getInitialState() {
return {cents: 3300}
},
_changeValue() {
this.setState({cents: Math.round(Math.random() * 2000 + Math.random() * 2000)})
},
_onCentsChange(cents) {
this.setState({cents})
},
render() {
return <div>
<p><strong>Cents:</strong> {this.state.cents.toFixed(0)} <input type="button" onClick={this._changeValue} value="Change"/></p>
<Child cents={this.state.cents} onCentsChange={this._onCentsChange}/>
</div>
}
})
var Child = React.createClass({
getInitialState() {
return {dollars: this.props.cents / 100}
},
componentWillReceiveProps(nextProps) {
if (this.props.cents != nextProps.cents) {
this.setState({dollars: nextProps.cents / 100})
}
},
_onChange(e) {
var dollars = e.target.value
this.setState({dollars})
if (!isNaN(parseFloat(dollars)) && isFinite(dollars)) {
this.props.onCentsChange(parseFloat(dollars) * 100)
}
},
render() {
return <div>
<input type="number" step="0.01" min="0" value={this.state.dollars} onChange={this._onChange}/>
</div>
}
})
React.render(<Parent/>, document.querySelector('#example'))
}()</script>
问题内容: 首先,我尝试了这篇文章(以及其他内容):Python中的货币格式。它对我的变量没有影响。我最好的猜测是,因为我使用的是Python 3,而那是Python 2的代码。(除非我忽略了某些东西,因为我是Python的新手)。 我想将浮点数(例如1234.5)转换为字符串,例如“ $ 1,234.50”。 我将如何去做呢? 以防万一,这是我的已编译但不影响我的变量的代码: 同样不成功: 问题
我需要能够得到阿达·卡达诺的收盘价在0.10美元到1.00美元之间。我该怎么做?我尝试使用and if语句进行for循环,但似乎不起作用。
问题内容: 我要如何转义html? 我正在将css文件传递给html这样 我明白了 我试图用template.HTML(data)包装字段,但是没有用。 问题答案: Go HTML模板包正确地覆盖了CSS。从包装文件中引用: 转义是上下文的,因此操作可以出现在JavaScript,CSS和URI上下文中。 是一个特殊值,如果您要包含的值在上下文中无效或不安全,它将用作替换值。 所以问题是您要包括的
本文向大家介绍web.py在模板中输出美元符号的方法,包括了web.py在模板中输出美元符号的方法的使用技巧和注意事项,需要的朋友参考一下 由于web.py已经在模板中定义“$”符号位定界符,所以在模板中如果要使用美元符号需要特殊处理。 如我要在模板中输出“$name”字符串: 报错 $name被认定为一个变量而不是当作HTML字符串处理。如果想要输出“$name”字符串必须要这么写: 保存运行正
我正在处理存在于一个php文件中的html表单,如下所示,我想计算输入的html输入值。 Php/HTML代码: 点击保存后,它会保存在JSON中,如下所示,并输入值列表。此时,我已经输入了值,因此在JSON中显示如下: 下面是属于上述html/php代码的表单截图部分: 输入值后,显示如下: 以下是inspect上的html代码: 问题陈述: 我想知道我需要添加什么php代码,以便获得输入值的计
这是为了可以节省我大约10分钟的工作时间,我没有得到报酬。这是Java。自从我触摸Java已经有一段时间了。我正在通过pdfBox搜索PDF以查找使用美元货币形式的数字。这是一个看起来很像的文档。 如果我用这样的方法。。。。。。 我只会为我的输出得到这个。 077071543史密斯,约翰中间9/25/19 9/26/19 1O 55.50酒吧SNQQ 211 WI MC 9/25/19me.ra7