当前位置:   article > 正文

vue3中使用elementui组件_vue3引入ui return

vue3引入ui return

vue3出来好一段时间了,一直想着用一下,今日集成elementui使用一下

首先创建一个vue3的基础项目 执行以下命令

npm init @vitejs/app vue3Projece -- --template react

出现如图所示的选择,按上下键选择 vue 按回车就可创建一个vue3的项目

 

然后用编辑工具打开项目,这里演示用vsCode

 

集成elementUi环境   element兼容vue3的时候换成 element-plus 执行 npm install element-plus --save 

目前组件还是测试版 在main.js中集成组件  vue3换了写法,编译也换成了 vite,不得不说vite的编译速度远远超过了webpack

  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import ElementPlus from 'element-plus';
  4. import 'element-plus/lib/theme-chalk/index.css';
  5. const app = createApp(App)
  6. app.use(ElementPlus)
  7. app.mount('#app')

 在Vue项目文件中使用 这里直接上代码  注意 这里使用的时候把script的setup去掉要不然vue会报错提示找不到属性  至于什么时候加setup 目前我也不太清楚

  1. <template>
  2. <div>
  3. <el-row>
  4. <el-button @click="open1">打开通知</el-button>
  5. <el-button type="primary" @click="state.dialogVisible = true">弹框</el-button>
  6. <el-button type="success" @click="open2">打开对话框</el-button>
  7. <el-button type="info" @click="open3">通知消息</el-button>
  8. <el-button type="warning">警告按钮</el-button>
  9. <el-button type="danger">危险按钮</el-button>
  10. </el-row>
  11. <el-dropdown>
  12. <span class="el-dropdown-link">
  13. 下拉菜单<i class="el-icon-arrow-down el-icon--right"></i>
  14. </span>
  15. <template #dropdown>
  16. <el-dropdown-menu>
  17. <el-dropdown-item>黄金糕</el-dropdown-item>
  18. <el-dropdown-item>狮子头</el-dropdown-item>
  19. <el-dropdown-item>螺蛳粉</el-dropdown-item>
  20. <el-dropdown-item disabled>双皮奶</el-dropdown-item>
  21. <el-dropdown-item divided>蚵仔煎</el-dropdown-item>
  22. </el-dropdown-menu>
  23. </template>
  24. </el-dropdown>
  25. <el-dialog
  26. title="提示"
  27. v-model="state.dialogVisible"
  28. width="30%"
  29. :before-close="handleClose">
  30. <span>这是一段信息</span>
  31. <template #footer>
  32. <span class="dialog-footer">
  33. <el-button @click="state.dialogVisible = false">取 消</el-button>
  34. <el-button type="primary" @click="state.dialogVisible = false">确 定</el-button>
  35. </span>
  36. </template>
  37. </el-dialog>
  38. </div>
  39. </template>
  40. <script>
  41. import { defineComponent, reactive} from 'vue';
  42. import { ElMessage,ElMessageBox,ElNotification} from 'element-plus'
  43. export default defineComponent({
  44. setup() { // setup钩子函数
  45. // 使用响应式函数reactive构建proxy响应式对象state
  46. const state = reactive({
  47. msg: '时光',
  48. dialogVisible:false
  49. })
  50. console.log(state); // state对象是一个proxy拦截对象
  51. let info = 'hello'; // info是一个普通对象,修改后不会被proxy拦截,进而页面也不会动态更新
  52. const changeMsg = () => { // 在外边定义methods
  53. state.msg = '时光,你好'
  54. info = 'hello,你好'
  55. }
  56. let open1=() =>{
  57. ElMessage({
  58. message: '恭喜你,这是一条成功消息',
  59. type: 'success'
  60. })
  61. }
  62. let open2=() =>{
  63. ElMessageBox.alert('这是一段内容', '标题名称', {
  64. confirmButtonText: '确定',
  65. callback: action => {
  66. this.$message({
  67. type: 'info',
  68. message: `action: ${ action }`
  69. });
  70. }
  71. })
  72. }
  73. let open3=() =>{
  74. ElNotification({
  75. title: '标题名称',
  76. message: '这是提示文案'
  77. })
  78. }
  79. return { // 使用时,要把对象return出去,才能在template中使用
  80. state,
  81. info,
  82. changeMsg,
  83. open1,
  84. open2,
  85. open3
  86. }
  87. }
  88. })
  89. </script>
  90. <style>
  91. #app {
  92. font-family: Avenir, Helvetica, Arial, sans-serif;
  93. -webkit-font-smoothing: antialiased;
  94. -moz-osx-font-smoothing: grayscale;
  95. text-align: center;
  96. color: #2c3e50;
  97. margin-top: 60px;
  98. }
  99. </style>

来几张效果图 

目前来说 组件兼容的时候使用的地方改变不大,也就是提示框的弹出,表单验证的获取,部分弹框的绑定上做了改变,vue3使用的时候,定义参数和方法的地方也改变了,直接在 defineComponent  的setup函数里面定义并返回。

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/118977
推荐阅读
相关标签
  

闽ICP备14008679号