Как я могу включить JS в запись JS и получить доступ к нему из других компонентов - PullRequest
0 голосов
/ 25 января 2019

Я хочу иметь возможность использовать экземпляр Socket.IO в моих компонентах Vue, я не хочу иметь import io from 'socket.io-client' в каждом файле компонента, поэтому я подумал, что я смогу импортировать его в свою "главную".js "и используйте его где-нибудь еще.

Пока я видел несколько ответов, но ни один из них, похоже, не работает

Я пытался включить

import io from 'socket.io-client'
...

var sock = io('localhost:3000')

export const globalStore = new Vue({
  data: {
    sock: sock
  }
})

В моем main.js и называю это как

import {globalStore} from '../main.js'

const SOCK = globalStore.sock

Но я все равно получаю Uncaught ReferenceError: sock is not defined at Object.login

Когда я пытаюсь сделать

SOCK.emit()

Я хочу иметь возможность включить файл JS (а не просто socket.io) один раз и вызывать его из любого места.

1 Ответ

0 голосов
/ 25 января 2019

Вы можете привязать свой носок к прототипу VueJS:

// main.js file

import Vue from 'vue'
import io from 'socket.io-client'

const sock = io('localhost:3000')

Vue.prototype.$sock = sock

new Vue({
    ...
})

После этого вы сможете получить к нему доступ в своих компонентах следующим образом:

export default {
    created () {
        console.log(this.$sock)
    }
}
...