React中Semantic UI Dropdown设trigger后占位符不显示问题咨询
解决Semantic UI React Dropdown自定义trigger时占位符不显示的问题
嗨,我来帮你捋清楚这个问题的原因,以及怎么解决它:
问题原因
当你给Dropdown设置trigger prop时,Semantic UI React会用你传入的自定义元素完全替换掉Dropdown默认的触发容器——而默认容器里正好包含了显示占位符的文本区域。你现在用单独的<Icon>作为trigger,相当于把原本带占位符的输入/选择框给覆盖了,所以占位符自然就看不到啦。
解决方案
推荐用官方推荐的方式,不要直接用trigger来加图标,而是用Dropdown自带的icon和iconPosition属性,这样既能保留图标,又不会丢失占位符:
修改后的代码如下:
render() { const { options, value, disabled, t } = this.props; return ( <Dropdown icon="tags" iconPosition="left" // 可以改成"right",根据你的布局需求调整 allowAdditions disabled={disabled} fluid multiple onAddItem={this.newTag} onChange={this.onChange} options={options} placeholder="Hello" search selection selectOnBlur={false} value={value} className="tagPicker" /> ); }
如果必须用自定义trigger的情况
要是你因为特殊需求(比如给图标加专属样式或事件)一定要用trigger,那得在自定义trigger里手动包含占位符的显示元素,模拟默认Dropdown的结构:
render() { const { options, value, disabled, t } = this.props; // 自定义trigger,同时包含图标和占位符文本容器 const trigger = ( <div className="ui fluid search selection multiple dropdown tagPicker"> <Icon name="tags" className="iconTagPicker" /> <input type="hidden" name="tags" /> {/* 手动添加占位符文本区域 */} <div className="default text">Hello</div> </div> ); return ( <Dropdown trigger={trigger} allowAdditions disabled={disabled} fluid multiple onAddItem={this.newTag} onChange={this.onChange} options={options} search selection selectOnBlur={false} value={value} className="tagPicker" /> ); }
第一种方案更简洁也更符合官方组件的设计逻辑,优先推荐哦~
内容的提问来源于stack exchange,提问作者rosu alin
相关产品推荐
相关产品推荐

