Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I'd like to ask about the progress of vue3 support #157

Open
ddmy opened this issue Feb 25, 2021 · 6 comments
Open

I'd like to ask about the progress of vue3 support #157

ddmy opened this issue Feb 25, 2021 · 6 comments

Comments

@ddmy
Copy link

ddmy commented Feb 25, 2021

I'd like to ask about the progress of vue3 support, thanks

@yili001
Copy link

yili001 commented Jun 4, 2021

Indeed, when I try to use it in VUE-CLI4, It will throw out this error:
Uncaught TypeError: Object.defineProperty called on non-object
at Function.defineProperty ()
at Object.install (vue-ls.js?c16e:501)
at Object.use (runtime-core.esm-bundler.js?5c40:2972)
at eval (main.js?56d7:8)
at Module../src/main.js (app.js:1253)

@sschuchlenz
Copy link

+1

1 similar comment
@skywolf627
Copy link

+1

@loknum
Copy link

loknum commented Jul 7, 2022

no one supports this project?

@qingyanmaodai
Copy link

在utils/index文件上
import Storage from 'vue-ls';
export const store = Storage.useStorage({
namespace: 'vue-', name: 'ls', storage: 'local',
}).ls;
然后在页面按需引入import {store} from '@/utils'
使用store的set和get就可以了

@tfoxy
Copy link

tfoxy commented Dec 8, 2023

To easily migrate multiple Vue 2 apps that are dependent on having $ls property, I used the following:

import { MemoryStorage, WebStorage } from 'vue-ls/src/storage'

// eslint-disable-next-line
const _global = typeof window !== 'undefined' ? window : global || {}

/**
 * @type {import('vue').Plugin}
 */
const VueStorage = {
  install(app, options = {}) {
    const _options = Object.assign({}, options, {
      storage: options.storage || 'local',
      name: options.name || 'ls',
    })

    if (
      _options.storage &&
      ['memory', 'local', 'session'].indexOf(_options.storage) === -1
    ) {
      throw new Error(`Vue-ls: Storage "${_options.storage}" is not supported`)
    }

    let store = null

    switch (_options.storage) {
      case 'local':
        store = 'localStorage' in _global ? _global.localStorage : null
        break

      case 'session':
        store = 'sessionStorage' in _global ? _global.sessionStorage : null
        break
      case 'memory':
        store = MemoryStorage
        break
    }

    if (!store) {
      store = MemoryStorage
      console.error(
        `Vue-ls: Storage "${_options.storage}" is not supported your system, use memory storage`,
      )
    }

    const ls = new WebStorage(store)

    ls.setOptions(
      Object.assign(
        ls.options,
        {
          namespace: '',
        },
        _options || {},
      ),
    )

    app.config.globalProperties[`$${_options.name}`] = ls
  },
}

export default VueStorage

This is based in https://github.com/RobinCK/vue-ls/blob/e5bc3388b9e4f6c860dae3b4ab2b89f33e939c60/src/index.js, but with the last part changed (app.config.globalProperties).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants