vue element-ui el-tooltip组件失效问题及解决

 更新时间:2023年10月17日 17:02:06   作者:ygrhlh  
这篇文章主要介绍了vue element-ui el-tooltip组件失效问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue element-ui el-tooltip组件失效

起因

因为公司项目年代久远以及谷歌chrome 80 后的samesite问题,所以在开发阶段使用Firefox来查看效果

项目上到测试环境之后,我这边使用Firefox查看效果是没有问题的,tooltip组件正式显示

但是当测试使用Chrome的时候,tooltip组件没有显示,审查元素也发现没有相应的tooltip的html元素出现,正常来讲应该是要出现类似以下的html元素的

最后经过大量百度(bushi) 以及查阅github的issue之后得出:

el-tooltip组件内直接放置文本或者单一元素的时候,在Chrome会有tooltip不出现的问题,在Firefox却不会

<template>
	<!-- 直接放置文本 -->
	<el-tooltip class="item" effect="dark" content="tooptip" placement="top-start">
	 	直接放置文本
	</el-tooltip>
	
	<!-- 单一元素 -->
	<el-tooltip class="item" effect="dark" content="tooptip" placement="top-start">
	 	<textarea v-model="value" @change="updata"></textarea>
	</el-tooltip>
</template>

尝试解决

但是如果你用一个盒子去包裹的话,它又可以了!!!

<template>
	<el-tooltip class="item" effect="dark" content="tooptip" placement="top-start">
	 	<p>用一个p标签包裹文本</p>
	</el-tooltip>
	
	<el-tooltip class="item" effect="dark" content="tooptip" placement="top-start">
	 	<div>
	 		<textarea v-model="value" @change="updata"></textarea>
		</div>
	</el-tooltip>
</template>

心得

在使用el-tooptip组件时应该始终用一个盒子去包裹住里面的元素

vue element-ui 使用el-tooltip内部嵌套其他element-ui组件时报错

现象:

[Vue warn]: Error in mounted hook: "TypeError: Cannot read properties of undefined (reading 'style')"

found in

---> <ElSwitch> at packages/switch/src/component.vue
       <ElTooltip>
         <ElDialog> at packages/dialog/src/component.vue
           <OffSeasonStorage>
             <CustomizationDetails> at src/views/equipment/components/Customization.vue
               <AppMain> at src/layout/components/AppMain.vue
                 <Layout> at src/layout/index.vue
                   <App> at src/App.vue
                     <Root>
warn @ vue.runtime.esm.js?2b0e:619
vue.runtime.esm.js?2b0e:1897 TypeError: Cannot read properties of undefined (reading 'style')
    at VueComponent.setBackgroundColor (element-ui.common.js?5c96:7289:1)
    at VueComponent.mounted (element-ui.common.js?5c96:7314:1)
    at invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1863:1)
    at callHook (vue.runtime.esm.js?2b0e:4235:1)
    at Object.insert (vue.runtime.esm.js?2b0e:3158:1)
    at invokeInsertHook (vue.runtime.esm.js?2b0e:6390:1)
    at VueComponent.patch [as __patch__] (vue.runtime.esm.js?2b0e:6609:1)
    at Vue._update (vue.runtime.esm.js?2b0e:3963:1)
    at VueComponent.updateComponent (vue.runtime.esm.js?2b0e:4081:1)
    at Watcher.get (vue.runtime.esm.js?2b0e:4495:1)
logError @ vue.runtime.esm.js?2b0e:1897

代码:

<el-dialog
    :visible.sync="dialogVisible"
    :close-on-click-modal="false"
    :destroy-on-close="true"
    :before-close="closeFunc"
    :lock-scroll="false"
    :append-to-body="true"
    top=""
  >
<el-tooltip v-model="item.tooltip" effect="dark" :manual="true" placement="left">
    <div slot="content">
      <div>
        <div>tips</div>
      </div>
    </div>
    <div>
      <el-switch
                v-model="item.switch"
                class="switch"
                :width="60"
                active-color="#AE0F0A"
                inactive-color="#DDDDDD"
                @change="switchChangeFuc(item)"
              >
              </el-switch>
            </div>
          </el-tooltip>
</el-dialog>

解决方案

根据dialog的展示与否重新渲染el-switch

<el-switch
                v-if="dialogVisible"
                v-model="item.switch"
                class="switch"
                :width="60"
                active-color="#AE0F0A"
                inactive-color="#DDDDDD"
                @change="switchChangeFuc(item)"
              >
              </el-switch>

结果:问题解决

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vuex中的四个map方法的使用小结

    vuex中的四个map方法的使用小结

    vuex里面有四个map方法,他们分别可以针对不同的元素进行不同的代码生成,本文就来详细的介绍一下vuex中的四个map方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-05-05
  • vue3+el-table实现行列转换

    vue3+el-table实现行列转换

    在处理文本数据的时候,我们经常会需要把文本数据的行与列进行转换操作,这样更方便查看,本文就详细的介绍了vue3+el-table实现行列转换,感兴趣的可以了解一下
    2021-06-06
  • vue.js Router嵌套路由

    vue.js Router嵌套路由

    这篇文章主要介绍vue.js Router嵌套路由,平时访问首页,里面有新闻类的/home/news,还有信息类的/home/message这时候就需要使用到嵌套路由,下面我们就来具体学习嵌套路由的原理,需要的朋友可以参考一下
    2021-10-10
  • vue3中vue.config.js配置Element-plus组件和Icon图标实现按需自动引入实例代码

    vue3中vue.config.js配置Element-plus组件和Icon图标实现按需自动引入实例代码

    这篇文章主要给大家介绍了关于vue3中vue.config.js配置Element-plus组件和Icon图标实现按需自动引入的相关资料,在Vue 3中可以通过配置vue.config.js文件来进行按需自动引入,需要的朋友可以参考下
    2024-02-02
  • Vue下拉框回显并默认选中随机问题

    Vue下拉框回显并默认选中随机问题

    这篇文章主要介绍了Vue下拉框回显并默认选中随机问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Vue 样式切换及三元判断样式关联操作

    Vue 样式切换及三元判断样式关联操作

    这篇文章主要介绍了Vue 样式切换及三元判断样式关联操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • vue项目中图片选择路径位置static或assets的区别及说明

    vue项目中图片选择路径位置static或assets的区别及说明

    这篇文章主要介绍了vue项目中图片选择路径位置static或assets的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue组件值变化但不刷新强制组件刷新的问题

    vue组件值变化但不刷新强制组件刷新的问题

    这篇文章主要介绍了vue组件值变化但不刷新强制组件刷新的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • vue-resource拦截器设置头信息的实例

    vue-resource拦截器设置头信息的实例

    下面小编就为大家带来一篇vue-resource拦截器设置头信息的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • vue项目element UI input框扫码枪扫描过快出现数据丢失问题及解决方案

    vue项目element UI input框扫码枪扫描过快出现数据丢失问题及解决方案

    这篇文章主要介绍了vue项目element UI input框扫码枪扫描过快出现数据丢失问题,输入框要掉两个接口,根据第一个验证接口返回的code,弹不同的框,点击弹框确认再掉第二个接口,需要的朋友可以参考下
    2022-12-12

最新评论