Environment: vue3+typescript+element-plus
element가 app.config에 전역 메서드 $message
를 추가했습니다. globalProperties그래서 옵션 API
mounted(){ (this as any).$message.success("this.$message"); }
props를 전달하고 context는 이를 컨텍스트로 대체하지만 context에는 내보내기, attrs만 있습니다. 및 슬롯, 설정에서 이를 직접 사용하면 문제가 발생합니다. 공식 웹사이트의 설명:
setup() 내부에서는 다른 구성 요소 옵션을 구문 분석하기 전에 setup()이 호출되므로 이는 활성 인스턴스에 대한 참조가 아닙니다. setup() 내부의 이 동작은 다른 옵션의 동작과 완전히 다르게 동작합니다. setup()에서 다른 선택적 API와 함께 사용하면 혼란이 발생할 수 있습니다.
따라서 getCurrentInstance 메소드를 호출하여 인스턴스를 얻을 수 있습니다. 이 방법은 element-plus를 전역
//helloworld.vue import { getCurrentInstance, defineComponent,onMounted } from 'vue'; export default = defineComponent{ setup(omprops,content){ onMounted(()=>{ getCurrentInstance()?.appContext.config.globalProperties.$message.success("聪明"); }) }
//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"); }) }
//helloworld.vue import { inject, defineComponent,onMounted } from 'vue'; import { ElMessage } from 'element-plus' export default = defineComponent{ setup(omprops,content){ onMounted(()=>{ ElMessage.success('按需引入'); }) }
는 vue 파일에서 사용됩니다.
this.$message({ message: "提示信息", type: "success" })
는 js 파일에서 사용됩니다.
ElementUI.Message({ message: '提示信息', type: 'warning' });
위 내용은 vue3에서 element-plus를 사용하여 메시지를 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!