当前位置:  开发笔记 > Android > 正文

是否有带有React Native的Android跨平台clearButtonMode

如何解决《是否有带有ReactNative的Android跨平台clearButtonMode》经验,为你挑选了1个好方法。

如何在本机反应中实现“ X”清除按钮,以使其在Android和iOS上均可使用。iOS具有“ clearButtonMode”枚举的文本输入选项(“从不”,“正在编辑”,“除非编辑”,“始终”)。

为了使其跨平台,我们是否需要添加清除按钮的android条件渲染?就像是:

{Platform.OS === 'android' && }

似乎有点骇人听闻,所以我想知道是否有一种更清洁的方法。



1> 小智..:

对于您的问题,您只需创建一个简单的按钮来处理输入字段的清除功能,然后将其放置在TextInput组件旁边即可产生效果clearButtonMode

天真的实现可能是这样的:

    在您的主要组件构造函数中创建以下状态:

    TextInput状态的状态(是否被触摸?它是否有文本?)

    一个TextInput实际值的状态,请将TextInput设置value为此状态。

例如:

this.state = {
    textInput1Status: 'untouched',
    textInput1Value: '',
};

    创建回调函数以设置状态:

    创建一个回调函数来设置TextInput的值状态和状态状态,并将其分配给onChangeTextInput 的prop。

例如:

 this.onTextInput1Change(text)}
    value={this.state.textInput1Value}
/>

...

onTextInput1Change(text) {
    this.setState({
        textInput1Status: 'touched',
        textInput1Value: text
    });
}

    使用TouchableOpacity创建您自己的按钮并处理清除功能。

例如:


    


...

clearText() {
    this.setState({
        textInput1Status: 'untouched',
        textInput1Value: '',
    });
}

    处理“ X”按钮的呈现:

例如:

renderClearButotn() {
    if (this.state.textInput1Status == 'touched') {
        return (
            
                
            
        );
    } else {
        return '';
    }
}

...

render() {
    return (
         this.onTextInput1Change(text)}
            value={this.state.textInput1Value}
        />
        {this.renderClearButton()}          
    );
}

这样,您的代码将独立于iOS和Android。希望对您有所帮助!

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有