React-Native中使用antd-mobile的InputItem时遇到输入中文显示的问题

场景:

在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,目前这种方法可以暂时解决问题。

猜你喜欢

转载自blog.csdn.net/xjl271314/article/details/80230098