Tôi đang gặp một chút tình huống lạ, tôi đang xử lý đơn vị tiền tệ trong ứng dụng của mình. Về phía mô hình, tôi tiết kiệm tiền tệ như xu trước khi gửi đến máy chủ như tôi không muốn đối phó với các điểm thập phân ở phía máy chủ. Tuy nhiên, trong chế độ xem, tôi muốn hiển thị đơn vị tiền tệ thông thường chứ không phải là xu.dịch giữa đầu vào cent và đô la trong đầu vào html trong React
Vì vậy, tôi có lĩnh vực đầu vào này, nơi tôi lấy dữ liệu từ đô la và thay đổi nó thành xu:
<input name="balance" type="number" step="0.01" min="0" placeholder="Balance in cents" onChange={this.handleUpdate} value={this.props.user.balance/100)} />
Và khi có một sự thay đổi trong giá trị đầu vào, tôi thay đổi nó trở lại xu trước khi gửi nó phía trên:
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);
}
Điều này khiến tôi trở nên bế tắc, không có cách nào để tôi nhập dấu thập phân "." Hãy để tôi chứng minh:
33
vào hộp nhập liệu -> trở thành3300
trong tình trạng mẹ -> quay ngược lại như33
trong prop thành phần - tất cả tốt33.3
vào hộp nhập liệu -> trở thành3330
ở trạng thái gốc -> quay trở lại làm33.3
trong thành phần chống đỡ - tất cả tốt33.
vào hộp nhập liệu -> trở thành3300
trong tình trạng mẹ -> quay ngược lại như33
trong prop thành phần - đây là vấn đề
Như bạn có thể thấy trong trường hợp # 3, khi trước tiên người dùng nhập "." điều này không dịch trở lại cùng một số với "."
Vì đó là đầu vào được kiểm soát, về cơ bản không có cách nào để viết "."
Tôi đã cố gắng sử dụng yếu tố không kiểm soát được với defaultValue
, nhưng số lượng prop chưa sẵn sàng thời điểm thành phần được trả lại vì vậy nó chỉ có sản phẩm nào
Rất đẹp! Suy nghĩ React yêu cầu một số điều chỉnh ... Cảm ơn bạn! – Michael
Ví dụ của bạn hoạt động với React 0.14.0 https://jsfiddle.net/7h5o97wL/ nhưng không hoạt động React 15.4.2 https://jsfiddle.net/69z2wepo/73775/ –
Đây là vấn đề của tôi https://github.com/facebook/phản hồi/vấn đề/7253 –