【ElementUI】使用VNode调整Message消息提示

【ElementUI】使用VNode调整Message消息提示使用 VNode 作为参数调整 Message 消息提示内容

createElement 参数使用说明

  1. createElement 接受的参数
// @returns {VNode} createElement( // {String | Object | Function} // 一个 HTML 标签名、组件选项对象,或者 // resolve 了上述任何一种的一个 async 函数。必填项。 'div', // {Object} // 一个与模板中属性对应的数据对象。可选。 { 
    // (详情见下一节) }, // {String | Array} // 子级虚拟节点 (VNodes),由 `createElement()` 构建而成, // 也可以使用字符串来生成“文本虚拟节点”。可选。 [ '先写一些文字', createElement('h1', '一则头条'), createElement(MyComponent, { 
    props: { 
    someProp: 'foobar' } }) ] ) 
  1. 深入数据对象
{ 
    // 与 `v-bind:class` 的 API 相同, // 接受一个字符串、对象或字符串和对象组成的数组 'class': { 
    foo: true, bar: false }, // 与 `v-bind:style` 的 API 相同, // 接受一个字符串、对象,或对象组成的数组 style: { 
    color: 'red', fontSize: '14px' }, // 普通的 HTML attribute attrs: { 
    id: 'foo' }, // 组件 prop props: { 
    myProp: 'bar' }, // DOM 属性 domProps: { 
    innerHTML: 'baz' }, // 事件监听器在 `on` 属性内, // 但不再支持如 `v-on:keyup.enter` 这样的修饰器。 // 需要在处理函数中手动检查 keyCode。 on: { 
    click: this.clickHandler }, // 仅用于组件,用于监听原生事件,而不是组件内部使用 // `vm.$emit` 触发的事件。 nativeOn: { 
    click: this.nativeClickHandler }, // 自定义指令。注意,你无法对 `binding` 中的 `oldValue` // 赋值,因为 Vue 已经自动为你进行了同步。 directives: [ { 
    name: 'my-custom-directive', value: '2', expression: '1 + 1', arg: 'foo', modifiers: { 
    bar: true } } ], // 作用域插槽的格式为 // { name: props => VNode | Array 
   
     } 
    scopedSlots: { 
    default: props => createElement('span', props.text) }, // 如果组件是其它组件的子组件,需为插槽指定名称 slot: 'name-of-slot', // 其它特殊顶层属性 key: 'myKey', ref: 'myRef', // 如果你在渲染函数中给多个元素都应用了相同的 ref 名, // 那么 `$refs.myRef` 会变成一个数组。 refInFor: true } 

业务中使用

  1. 功能说明:
    在message的基础上加入二级信息提示,通过右侧按钮控制信息的显示隐藏。

  2. 代码实现:
import Vue from "vue" import { 
   Message} from 'element-ui' const defDuration = 2000; / * 异常信息错误提示 * @param data msg:错误信息;detail:错误详情 * @param duration 显示时间 * @returns {*} */ export function errorMsgDetail(data, duration) { 
    const vm = new Vue() const h = vm.$createElement; return Message({ 
    type: 'status-error', duration: duration || defDuration, message: h('div', { 
    style: { 
    display: "block", width: "100%" } }, [ h('button', { 
    attrs: { 
    id: "status-error-icon" }, style: { 
    position: "absolute", right: "10px", top: "8px", color: "#f56c6c" }, on: { 
    click: () => { 
    clickHandler(data.detail) } } }, '详细信息'), h('i', { 
    style: { 
    color: "#f56c6c", marginRight: "6px" }, attrs: { 
    class: "el-icon-error" } }, ''), h('span', { 
   style: 'color: #f56c6c'}, data.msg), h('div', { 
    style: { 
   display: "none"}, attrs: { 
    id: 'status-error-content' }, }, [ h('textarea', { 
    attrs: { 
    readonly: true, id: 'status-error-detail' }, style: { 
    margin: "10px 0", padding: '8px 10px', fontSize: '15px', height: "100px", overflowY: "auto", width: "100%", resize: "none", backgroundColor: "white" } }, ""), h('button', { 
    style: { 
    float: "right", padding: "0 2px" }, on: { 
    click: () => { 
    copyDocument() } } }, "复制") ]) ]) }); } // 显示||隐藏错误的详细信息 function clickHandler(msg) { 
    if (document.getElementById('status-error-content').style.display === 'block') { 
    document.getElementById('status-error-content').style.display = 'none'; } else { 
    document.getElementById('status-error-content').style.display = 'block'; } document.getElementById('status-error-detail').innerHTML = msg } // 复制错误信息 function copyDocument() { 
    var Url2 = document.getElementById("status-error-detail"); Url2.select(); // 选择对象 document.execCommand("Copy"); // 执行浏览器复制命令 } 

附:Vue.js中的虚拟 DOM说明

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229586.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:22
下一篇 2026年3月16日 下午4:22


相关推荐

  • MCP 教程-智能化设计交付:如何使用Cursor IDE的MCP功能将Figma设计稿一键转换为前端代码

    MCP 教程-智能化设计交付:如何使用Cursor IDE的MCP功能将Figma设计稿一键转换为前端代码

    2026年3月15日
    3
  • 最优化算法——常见优化算法分类及总结

    最优化算法——常见优化算法分类及总结之前做特征选择 实现过基于群智能算法进行最优化的搜索 看过一些群智能优化算法的论文 在此做一下总结 最优化问题 在生活或者工作中存在各种各样的最优化问题 比如每个企业和个人都要考虑的一个问题 在一定成本下 如何使利润最大化 等 最优化方法是一种数学方法 它是研究在给定约束之下如何寻求某些因素 的量 以使某一 或某些 指标达到最优的一些学科的总称 工程设计中最优化问题 optim

    2026年3月18日
    2
  • Cursor AI编程工具安装配置与高级使用教程:集成GPT-4/Claude 3.5的VS Code兼容开发环境

    Cursor AI编程工具安装配置与高级使用教程:集成GPT-4/Claude 3.5的VS Code兼容开发环境

    2026年3月16日
    2
  • p6spy工具_p6软件优缺点

    p6spy工具_p6软件优缺点使用此工具在运行代码需要访问数据库的时候,可以在控制台看见sql语句一、导包二、导入配置文件三、修改database.properties中的driver和url一、导包链接:https://pan.baidu.com/s/1vIOKgjEeRQ9wFB2HUv6QAQ提取码:lclc二、导入配置文件#####%L#P6Spy#%%#Copyright(C)2013P6Spy#%%#LicensedundertheApacheLicense,Versio

    2022年10月5日
    6
  • QT安装具体图解

    QT安装具体图解文章目录QT安装包下载Qt安装QT安装包下载我下载的版本是最新的5.14.2下载链接在下面,https://download.qt.io/archive/qt/5.14/5.14.2/找到Windows版本下载(ps:如果需要下载其他版本的话点击父目录就可以去选择不同版本了,建议5.9以上。)(ps:Linux上的Qt安装日后会更新,见谅)Qt安装1.双击下载好的安装包,出现界面点击next2.根据个人情况选择填写信息,有账号就登陆,没有就注册一个(注意:注册时候的密码需要英文大写,

    2022年5月17日
    50
  • pytest的assert_assert断言语句

    pytest的assert_assert断言语句前言断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试failed

    2022年7月28日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号