场景:
在React-Native项目中集成了antd-mobile在使用InputItem处理中文输入的时候,按照官方的解决方案是:
import React from 'react'
import { List, InputItem } from 'antd-mobile';
export default class SetScreen extends React.Component {
constructor(props) {
super(props)
this.state={
name:''
}
}
render() {
const { name } = this.state;
return (
<List>
<InputItem
clear
placeholder="请输入用户姓名"
ref={input=>this.name=input}
value={name}
onChange={(name)=>{this.setState({name})}}
>用户名</InputItem>
</List>
)
}
}
然而这段代码的实际效果是在使用ios自带输入法,中文输入法时,每输入一个字符会直接输入到input中,产生了无法输入中文的bug。
比如说我想输入’刘大’,然后在中文输入法下我得到的输出结果是:’liuda’.
这个应该是react-native内部的一个bug,现有的我的解决方案是这样的,
import React from 'react'
import { List, InputItem } from 'antd-mobile';
export default class SetScreen extends React.Component {
constructor(props) {
super(props)
this.state={
name:''
}
}
render() {
return (
<List>
<InputItem
clear
placeholder="请输入用户姓名"
ref={input=>this.name=input}
onChange={(name)=>{this.setState({name})}}
>用户名</InputItem>
</List>
)
}
}
将InputItem中的value值拿掉,然后变化的时候直接修改state里面的name,提交数据的时候直接获取state里面的name,目前这种方法可以暂时解决问题。