<Modal visible>
<TextInput
onChange={(text)=>{this.setState({value:text})}}
value={this.state.value}
/>
</Modal>
在Modal中使用完全受控狀態(tài)[1]的TextInput會出現(xiàn)無法輸入中文(非英文)的bug(僅iOS)
解決
- TextInput必須為半受控狀態(tài)
onOk=()=>{
// submit params
this.state.value
}
<Modal visible onOk={this.onOK}>
<TextInput
onChange={(text)=>{this.setState({value:text})}}
- value={this.state.value}
+ defaultValue={this.state.value}
/>
</Modal>
-
不要讓外部持續(xù)影響Modal內(nèi)部更新
2.1.
Modal+TextInput常作為彈窗表單提交組合,外部最多影響第一次的渲染,因此使用defaultValue承載首次默認(rèn)值
2.2. 應(yīng)避免使用ref獲取TextInput的值,保留onChange+state作為提交時獲取的數(shù)據(jù)