resessh / vue-unstated

A tiny state management library for Vue Composition API.

Home Page:https://www.npmjs.com/package/vue-unstated

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

logo

version Build Test codecov minzipped size typescript


vue-unstated

A tiny state management library for Vue Composition API based on unstated-next which is for React.

πŸ‡ Demo

Edit [vue-unstated DEMO] Todo

πŸ”Œ Installation

$ npm install --save vue-unstated

or

$ yarn add vue-unstated

πŸ„ Usage

use/counter.js

import { reactive } from '@vue/composition-api' // Vue 2 with @vue/composition-api
import { reactive } from 'vue' // or Vue 3
import { createContainer } from 'vue-unstated'

const useCounter = (initialState = { count: 0 }) => {
  const state = reactive(initialState)

  const increment = () => {
    state.count++
  }

  return { state, increment }
}

export const counterContainer = createContainer(useCounter)

Parent.vue

<script>
import { counterContainer } from 'use/counter'
import Child from 'Child.vue'

export default {
  components: { Child },
  setup() {
    // You can share same state in its child nodes!!
    const { state, increment } = counterContainer.provide()

    return {
      count: state.count,
      increment,
    }
  }
}
</script>

Child.vue

<script>
import { counterContainer } from 'use/counter'

export default {
  setup() {
    // You can use same state with Parent.vue!!
    const { state, increment } = counterContainer.useContainer()

    return {
      count: state.count,
      increment,
    }
  }
}
</script>

🏁 LICENSE

MIT

About

A tiny state management library for Vue Composition API.

https://www.npmjs.com/package/vue-unstated

License:MIT License


Languages

Language:TypeScript 68.2%Language:JavaScript 31.8%