更新最新版本的react-native,发现最近两版本的TextInput终于出现对ios的不友好。在官网查了下发现 0.54与0.55版本react-native的TextInput在iOS上无法输入中文日文韩文。
再翻看官方对TextInput的value解释,根本无效
value string #
文本框中的文字内容。
TextInput是一个受约束的(Controlled)的组件,意味着如果提供了value属性,原生值会被强制与value属性保持一致。在大部分情况下这都工作的很好,不过有些情况下会导致一些闪烁现象——一个常见的原因就是通过不改变value来阻止用户进行编辑。如果你希望阻止用户输入,可以考虑设置editable={false}
;如果你是希望限制输入的长度,可以考虑设置maxLength
属性,这两个属性都不会导致闪烁。
完美解决apple/android兼容问题
import { Platform,} from 'react-native';
shouldComponentUpdate(nextProps,nextState){
if
(
Platform
.
OS
===
'ios'
){
if
(
this
.
state
.
nickname
!==
nextState
.
nickname
){
//nickname为所要获得的
TextInput输入值,
return false
;
}
}
return true
;
};
希望对大家有所帮助,谢谢!