首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何: Vue3组合API插件

如何: Vue3组合API插件
EN

Stack Overflow用户
提问于 2020-11-11 07:48:23
回答 1查看 7K关注 0票数 3

如何创建与Vue3组合API一起工作的插件。

例如,可以在每个组件中访问的Socket.io插件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-11 07:48:23

要为Socket.io创建任何插件(例如: vue3 ),并在复合API组件和vue2 2/option组件中使用它。

创建插件并将其添加到plugins文件夹中

使用Socket.io 3.0.1

插件:

代码语言:javascript
复制
import { io } from 'socket.io-client'

export default {
  install: (app, { connection, options }) => {
    const socket = io(connection, options)
    app.config.globalProperties.$socket = socket

    app.provide('socket', socket)
  }
}

main.js中添加以下内容

代码语言:javascript
复制
import Socketio from '@/plugins/Socket.io'

app.use(Socketio, {
    connection: 'http://localhost:4001',
    options: {
        // Your Socket.io options here
    }
})

main.js示例

代码语言:javascript
复制
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import Socketio from '@/plugins/Socket.io'

const app = createApp(App)

app.use(store)
app.use(router)
app.use(Socketio, {
    connection: 'http://localhost:4001',
    options: {
        // Your Socket.io options here
    }
})

app.mount('#app')

用法:

选项API: this

在选项api中,可以使用this.$socket访问套接字。

代码语言:javascript
复制
<template>
// HTML here
</template>

<script>
export default {
   mounted () {
       // You can use the socket like shown below
       this.$socket.on('foo', () => {
           console.log('bar')
       })
   }
}
</script>

选项API: inject

在选项api中,您还可以使用注入插件

代码语言:javascript
复制
<template>
// HTML here
</template>

<script>
import { inject } from 'vue'

export default {
   mounted () {
       const socket = inject('socket')
       // You can use the socket like shown below
       socket.on('foo', () => {
           console.log('bar')
       })
   }
}
</script>

组合API inject

在复合API中,应该使用inject

代码语言:javascript
复制
<template>
    {{ bar }}
</template>

<script>
import { ref, inject } from 'vue'

export default {
    setup() {
        const socket = inject('socket')
        return { ...foo(socket) }
    }
}

function foo(socket) {
    const bar = ref('')
    socket.on('foo', (value) => {
        bar.value = value
    })

    return {
        bar
    }
}
</script>
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64782385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档