问答

鼠标移出事件 react antd popover

作者:admin 2021-08-20 我要评论

onVisibleChangeABox =(visible, item,classId,x,y,z)= { this.setState({ [`visible${x+y+z}`]: false, }); const RData = { "classId":classId, "shopId": thi...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
onVisibleChangeABox =(visible, item,classId,x,y,z)=> {
        this.setState({ 
            [`visible${x+y+z}`]: false,
        }); 
        const RData = {
              "classId":classId,
              "shopId": this.props.location.state.shopId,
        }
        CDetails(JSON.stringify(RData)).then(({data})=>{
            if(data.code === 100){
                data.data[0].visible = true
                console.log(data.data)
                console.log(data.data[0].visible)
                this.setState({
                    BtnList : data.data,
                })
            }
        })
    }
onMLpopover =(x,y,z)=> { // 单格鼠标离开事件隐藏气泡
     this.setState({ 
         [`visible${x+y+z}`]: false,
     });
 }


<div className="scrollBar" style={{overflowY:"scroll",height:"800px"}}>
    {Array.from(dataList).map((item,index)=>{
        const xxx = item.xxx
        ...
        shelfClassList.map((item,index)=>{
            ...
        })
        const str = []
        let ColumnsList = []
        for(let i =0;i<shelfRows;i++){
            let j = i*shelfColumns
            let flag = (i+1)*shelfColumns
            for(;j<flag;j++){
                let y = j
                let x = shelfName
                let z = shelfId
                ...
                const ABoxContent = ( <div onMouseOut={()=>this.onMLpopover(x,y,z)}>...</div> ) // 弹窗里的内容 省略
                ColumnsList.push(
                // 重点~~~~~
                <div className="aBox" key={'li_'+this.state.reactid++} style={{backgroundColor:shelfClassList[j].ButtonColor,}} onMouseOut={()=>this.onMLpopover(x,y,z)}> // 添加了鼠标移出事件
                  <Popover placement="right" content={ABoxContent} key={'li_'+this.state.reactid++} onVisibleChange={(visible)=>this.onVisibleChangeABox(visible, item,classId,x,y,z)} trigger="hover" `visible={this.state[`visible${x+y+z}`]}`>
                      <div className="aBox" key={'li_'+this.state.reactid++}>
                        {shelfClassList[j].classRow} - {shelfClassList[j].classColumn}
                       </div>
                   </Popover>
                )
            }
            str.push(<div key={item.shelfName+i} style={{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",height:"50px"}}>
                {ColumnsList}
            </div>) 
        }
return (
          <div className="oneBox" key={item.shelfId}>
             <div className="oneBoxTitle">
                 嗷嗷 : <Input className="InputBorderState" defaultValue={item.shelfName} size="small" onChange={this.onchangeShelfName} onFocus={this.onfocusShelf} onBlur={()=>this.onchangeShelfNameOut(shelfId)} suffix={<Tooltip title="可编辑"> <Icon type="edit" /> </Tooltip>}/> 
             </div>
             <div onClick={(e)=>this.onclick(e,item,shelfId,shelfClassList)}> 
                  {str}
              </div>
            </div>
      )
    })}
</div>

TIM截图20200509100043.png

鼠标明明移出了 气泡还显示 也设置了onMouseOut事件咋不好使(⊙?⊙)?
鼠标快速划过 会出现同时显示两个气泡的情况(⊙o⊙)?

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 使用箭头函数return数据不能实现

    使用箭头函数return数据不能实现

  • 个人小程序号能接入小程序3D地图吗?

    个人小程序号能接入小程序3D地图吗?

  • vue 移动端项目中,使用了better-scrol

    vue 移动端项目中,使用了better-scrol

  • css如何做出区域平均划分为四列

    css如何做出区域平均划分为四列

腾讯云代理商
海外云服务器