React Native 在Modal中,使用TextInput时,无法输入中文

<Modal visible>
  <TextInput 
    onChange={(text)=>{this.setState({value:text})}}
    value={this.state.value}
 />
</Modal>

在Modal中使用完全受控状态[1]的TextInput会出现无法输入中文(非英文)的bug(仅iOS)

解决

  1. TextInput必须为半受控状态
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>
  1. 不要让外部持续影响Modal内部更新

    2.1. Modal+TextInput 常作为弹窗表单提交组合,外部最多影响第一次的渲染,因此使用defaultValue承载首次默认值
    2.2. 应避免使用ref获取TextInput的值,保留onChange+state作为提交时获取的数据

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容