vue3中使用element-plus调用message

环境:vue3+typescript+element-plus

  1. 全局引入element之后,element已经在 app.config.globalProperties 添加了全局方法 $message
    所以在options API中可以直接使用
  mounted(){
    (this as any).$message.success("this.$message");
  }
  1. 在Composition API中setup方法传入了两个变量,props和context,context作为上下文取代this,但是context中只有emit,attrs,和slots,而直接在setup中使this,会出现问题:官方网站的说明:

     在 setup() 内部,this 不会是该活跃实例的引用,因为 setup() 是在解析其它组件选项之前被调用的,所以 setup() 内部的 this 的行为与其它选项中的 this 完全不同。这在和其它选项式 API 一起使用 setup() 时可能会导致混淆。
    

    所以可以使用getCurrentInstance方法获取实例。此方法在全局引入element-plus之后就可直接使用

//helloworld.vue
import { getCurrentInstance, defineComponent,onMounted } from 'vue';
export default  = defineComponent{
setup(omprops,content){
    onMounted(()=>{
      getCurrentInstance()?.appContext.config.globalProperties.$message.success("聪明");
    })
}
  1. 还有一种方法是使用 provide/inject;
//main.ts
import { createApp } from 'vue'
import App from './App.vue'
import element from 'element-plus'
import 'element-plus/lib/theme-chalk/index.css'
import {ElMessage} from 'element-plus'
const app = createApp(App)
app.use(element)
//如果没有全局引用element,还需写下面一句
//app.config.globalProperties.$message = ElMessage;
app.provide('$message', ElMessage)
app.mount('#app')
//helloworld.vue
import { inject, defineComponent,onMounted } from 'vue';
export default  = defineComponent{
setup(omprops,content){
    onMounted(()=>{
      (inject('$message') as any).success("inject");
    })
}
  1. 在Composition api中最简单的写法就是按需引入。
//helloworld.vue
import { inject, defineComponent,onMounted } from 'vue';
import { ElMessage } from 'element-plus'
export default  = defineComponent{
setup(omprops,content){
    onMounted(()=>{
      ElMessage.success('按需引入');
    })
}
  • 22
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
Vue3 使用 Element-Plus 的表单验证,可以按照以下步骤进行: 1. 安装 Element-Plus 和 Vee-Validate(Element-Plus 使用 Vee-Validate 进行表单验证): ```bash npm install element-plus vee-validate@next ``` 2. 在 main.js 导入 Element-Plus 和 Vee-Validate: ```js import { createApp } from 'vue' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' import { defineRule, ErrorMessage, configure } from 'vee-validate' import { required, email } from '@vee-validate/rules' const app = createApp(App) app.use(ElementPlus) defineRule('required', required) defineRule('email', email) app.component('ErrorMessage', ErrorMessage) configure({ generateMessage: (ctx) => { const messages = { required: `${ctx.field}不能为空`, email: `${ctx.field}格不正确` } const message = messages[ctx.rule.name] return message.replace('{field}', ctx.field) } }) app.mount('#app') ``` 3. 在组件定义表单: ```html <template> <el-form :model="form" ref="form" :rules="rules" label-position="left" label-width="80px"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username"></el-input> </el-form-item> <el-form-item label="邮箱" prop="email"> <el-input v-model="form.email"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> ``` ```js <script> import { useForm } from 'vee-validate' export default { setup() { const { form, handleSubmit, setErrors, errors } = useForm() const rules = { username: [ { required: true, message: '请输入用户名' } ], email: [ { required: true, message: '请输入邮箱' }, { email: true, message: '邮箱格不正确' } ] } const submitForm = handleSubmit(() => { // 表单提交逻辑 }) return { form, rules, submitForm } } } </script> ``` 在上述代码,我们使用 `useForm` 方法来定义表单验证相关的逻辑。其,`rules` 定义了每个表单元素的验证规则,`handleSubmit` 方法用于表单提交的回调函数,`setErrors` 和 `errors` 用于设置和获取表单验证错误信息。 在模板,我们使用 Element-Plus 的表单组件来渲染表单元素,并且使用 `v-model` 指令将表单元素和表单数据进行绑定。在表单提交时,调用 `handleSubmit` 方法来触发表单验证并执行表单提交逻辑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值