我想要一個與我在後端具有的值列表同步的文本輸入列表。因此,在它們中輸入更新值,並更新這些值反映在文本輸入中。React - 在存儲和顯示時使用不同格式的2路綁定文本輸入
這是這樣的一個典型的2路綁定情況:
class BoundInput extends Component {
constructor(props) {
super(props);
this.state = {textVal: ''};
}
handleChange = evt => this.setState({textVal: evt.target.value});
render() {
return <input type="text"
value={this.state.textVal}
onChange={this.handleChange} />
}
}
但我想用來存儲用戶輸入沒有什麼價值,但,比如,從釐米轉換。到英寸
不幸的是,轉換,然後轉換回來並不完美。
E.g.打字'2.'
立即被轉換回'2'
,所以如果你想輸入一個十進制和其他任何東西,你會被卡住。
我想能夠具有所存儲的值來更新所述輸入顯示除非輸入是活動的,在這種情況下它應該只從輸入更新存儲值。
所以我有一個布爾值,讓我在value
有條件地傳遞到文本輸入的,所以類型確定可以輸入入無人之境,顯示可以更新到的等價表示只有一次,他們離開焦點(例如'1.'
突然變得'1'
或'1.0'
),這很好。
我試過這個,但是我得到一個輸入組件在整個生命週期內必須被控制或失控的錯誤。沒有像我那樣改變它。
關於整體策略的任何建議,或繞過這個關於控制與不受控制的特別警告?
也許一種方法來殺死和重新安裝輸入組件之前,從value
通過value
不通過?
我做的這件事很難看,因爲所有這些都只是重複我的輸入組件(我稱之爲NiceInput
),而當它不活動時,我交換重複的NiceInput2
。這樣做很有效,但必須比複製組件的方式更加荒謬:D