react-native-elements 搜索栏将“取消”字符串设置为图标

如何解决react-native-elements 搜索栏将“取消”字符串设置为图标

我想用一个图标(请参阅底部代码)替换搜索栏按钮上的“取消”文本(请参阅底部的屏幕截图)。 这是具有认道具的渲染部分:

render() {
        const _a = this.props,{ theme,cancelButtonProps,cancelButtonTitle,clearIcon,containerStyle,leftIconContainerStyle,rightIconContainerStyle,inputContainerStyle,inputStyle,placeholderTextColor,showLoading,loadingProps,searchIcon,showCancel } = _a,attributes = __rest(_a,["theme","cancelButtonProps","cancelButtonTitle","clearIcon","containerStyle","leftIconContainerStyle","rightIconContainerStyle","inputContainerStyle","inputStyle","placeholderTextColor","showLoading","loadingProps","searchIcon","showCancel"]);
        const { hasFocus,isEmpty } = this.state;
        const { style: loadingStyle } = loadingProps,otherLoadingProps = __rest(loadingProps,["style"]);
        const { buttonStyle,buttonTextStyle,color: buttonColor,disabled: buttondisabled,buttondisabledStyle,buttondisabledTextStyle } = cancelButtonProps,otherCancelButtonProps = __rest(cancelButtonProps,["buttonStyle","buttonTextStyle","color","disabled","buttondisabledStyle","buttondisabledTextStyle"]);
        return (<View style={StyleSheet.flatten([
                styles.container,{ backgroundColor: theme.colors.white },])}>
        <Input testID="searchInput" renderErrorMessage={false} {...attributes} onFocus={this.onFocus} onBlur={this.onBlur} onChangeText={this.onChangeText} ref={(input) => {
                this.input = input;
            }} inputStyle={StyleSheet.flatten([styles.input,inputStyle])} containerStyle={{
                paddingHorizontal: 0,}} inputContainerStyle={StyleSheet.flatten([
                styles.inputContainer,{ backgroundColor: theme.colors.platform.ios.searchBg },hasFocus && { marginRight: this.state.cancelButtonWidth },])} leftIcon={renderNode(Icon,defaultSearchIcon(theme))} leftIconContainerStyle={StyleSheet.flatten([
                styles.leftIconContainerStyle,])} placeholderTextColor={placeholderTextColor || theme.colors.platform.ios.grey} rightIcon={<View style={{ flexDirection: 'row' }}>
              {showLoading && (<ActivityIndicator key="loading" style={StyleSheet.flatten([{ marginRight: 5 },loadingStyle])} {...otherLoadingProps}/>)}
              {!isEmpty &&
                    renderNode(Icon,Object.assign(Object.assign({},defaultClearIcon(theme)),{ key: 'cancel',onPress: this.clear }))}
            </View>} rightIconContainerStyle={StyleSheet.flatten([
                styles.rightIconContainerStyle,])}/>

        <View style={StyleSheet.flatten([
                styles.cancelButtonContainer,{
                    opacity: this.state.cancelButtonWidth === null ? 0 : 1,right: hasFocus ? 0 : -this.state.cancelButtonWidth,},])} onLayout={(event) => this.setState({ cancelButtonWidth: event.nativeEvent.layout.width })}>
          <TouchableOpacity accessibilityRole="button" onPress={this.cancel} disabled={buttondisabled} {...otherCancelButtonProps}>
            <View style={[buttonStyle,buttondisabled && buttondisabledStyle]}>
              <Text style={[
                styles.buttonTextStyle,buttonColor && { color: buttonColor },buttondisabled &&
                    (buttondisabledTextStyle || styles.buttonTextdisabled),]}>
                {cancelButtonTitle}
              </Text>
            </View>
          </TouchableOpacity>
        </View>
      </View>);
    }
}
SearchBar.defaultProps = {
    value: '',cancelButtonTitle: 'Cancel',loadingProps: {},cancelButtonProps: {},showLoading: false,onClear: () => null,onCancel: () => null,onFocus: () => null,onBlur: () => null,onChangeText: () => null,searchIcon: { name: 'ios-search' },clearIcon: { name: 'ios-close-circle' },showCancel: false,};

它看起来像这样:

Cancel

现在我想用一个图标替换这个“取消”:

const defaultCancelIcon = (theme) => ({
    type: 'material',size: 25,color: theme?.colors?.platform?.android?.grey,name: 'arrow-back',});

由于我还没有使用编辑过的 react-native-elements,所以我真的不知道该怎么做。我试图改变 defaultProps,但它没有改变任何东西。我该怎么做?

解决方法

类型

<YourIconName />

而不是“取消”,例如

SearchBar.defaultProps = {
    value: '',cancelButtonTitle: <YourIconName />,loadingProps: {},...
};

我觉得应该可以

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?