组合运算符(交、并、差)按钮小总结

需求简图:

 说明:

        1. 按钮滑入提示文本(替换 or  删除)

        2. 按钮滑入可以点击右上角”红色小标“删除当前按钮;

            也可以点击选中(禁用状态,此时再次滑入点击”红色角标“是无法删除当前按钮的),这个状态下考虑的是用户直接去”替换“当前按钮,而不是删除,否则按钮删除需要再次删除后续的人群、标签,进而重新添加按钮和参与运算的人群、标签,部分类目标签涉及层级太深,步骤次序太多繁琐不利于用户体验。综上,选中后必须去点击运算符列表中的某一个,替换”当前禁用按钮“。

 

        3.删除”红色角标“需要考虑一下如何嵌入Html中的位置,及冒泡事件的影响(较难)

实 现 : 

index.jsx

 <div className='d-x d-xc d-wrap'>
                            {
                              saveCombinationArr.length > 0
                                && saveCombinationArr.map((e, index) => {
                                if (e.type === SHOW.ACTION) {
                                    return (
                                      <>
                                        <div className='operatorBtn pr tc ml4x mr4x'>
                                          <Balloon
                                            align='t'
                                            v2={true}
                                            closable={false}
                                            triggerType="hover"
                                            trigger={
                                              <Button
                                                disabled={reOperator === index || isView}
                                                onClick={() => this.replaceOperator(index)}
                                              >
                                                <div
                                                  className='initCSS hoverCSS'
                                                  onClick={() => this.deleteOperator(index)}
                                                  style={{ position: 'absolute', top: '-15px', left: '25px' }}
                                                >
                                                  <Icon type="error" size='xs' style={{ color: 'red' }} />
                                                </div>
                                                {e.label}
                                              </Button>
                                            }
                                          >
                                            Check to Replace or Delete operators
                                          </Balloon>

                                        </div>
                                      </>
                                    )
                                  }
                                })
                            }
</div>

inidex.scss

.initCSS {
    display: none;
  }
.operatorBtn:hover .hoverCSS {
    display: block
  }

=> (关键!!!)

1.起初考虑用组件库<Button>来完成,但是无法触发删除事件,原因在于外层已经有了<Button>发生了嵌套,而且react渲染render也不允许,此方法放弃;

现在的方法可以用古人的诗句概括 :"山重水复疑无路,柳暗花明又一村";又或者说:”踏破铁鞋无觅处,得来全不费工夫“;”众里寻他千百度,蓦然回首那人(div)却在灯火阑珊处“

诸卿应好好品鉴一下古诗之精华,中华文化之博大精深。

首先,既然是click,那就不要局限于组件库,原生div即可解决这个问题;

同样,滑入的提示文本之前方法采用的是<Button> 和 <Icon> 配合来实现,但是会出现问题,具体是:提示文字和”红色角标“只能出现其中一个,二者不能并存,解决办法:className + Style 药到病除(注意此处只用行内样式无法实现)。

综上:

        核心在于剖析问题的细节,有时候会”舍近求远“,而忽略眼前的。回首再看第三句古诗,细细品味 ”div“, 是否有一石二鸟的感觉,一则解决了红色角标的删除事件,二则配合className + style 使得 ”提示“ 和 “删除角标 ” 实现效果和功能。

        分析问题要全面,解决问题要多点(thinking)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒枫落林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值