All Projects → samuelantonioli → vue-static

samuelantonioli / vue-static

Licence: MIT license
Support for non-reactive variables in Vue components

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to vue-static

meteor-server-autorun
Server-side Tracker.autorun
Stars: ✭ 36 (-36.84%)
Mutual labels:  reactivity
sync-client
SyncProxy javascript client with support for all major embedded databases (IndexedDB, SQLite, WebSQL, LokiJS...)
Stars: ✭ 30 (-47.37%)
Mutual labels:  reactivity
oxjs
Reactive JavaScript Objects and Primitives
Stars: ✭ 33 (-42.11%)
Mutual labels:  reactivity
node-reactive-postgres
Reactive queries for PostgreSQL
Stars: ✭ 28 (-50.88%)
Mutual labels:  reactivity
WpfExtensions
Some syntactic sugar for Wpf development.
Stars: ✭ 128 (+124.56%)
Mutual labels:  reactivity
reactive-states
Reactive state implementations (brainstorming)
Stars: ✭ 51 (-10.53%)
Mutual labels:  reactivity
meteor-computed-field
Reactively computed field for Meteor
Stars: ✭ 18 (-68.42%)
Mutual labels:  reactivity
Tui.grid
🍞🔡 The Powerful Component to Display and Edit Data. Experience the Ultimate Data Transformer!
Stars: ✭ 1,859 (+3161.4%)
Mutual labels:  reactivity
solid-use
A collection of SolidJS utilities
Stars: ✭ 36 (-36.84%)
Mutual labels:  reactivity

Vue-Static

This plugin enables you to have variables in your Vue component that don't have reactivity.

Why

Sometimes you don't want reactivity for some of your variables e.g. because they contain other objects (leafletjs maps or similar) or because they are huge and you don't need reactivity for them (e.g. big objects).

Installation

$ npm i vue-static

in your main.js:

import VueStatic from 'vue-static'
Vue.use(VueStatic);

Usage

<template>
    <div>
        <p>
            Just use it like a normal variable: {{untracked_variable}}
        </p>
    </div>
</template>
<script>
export default {
    static() {
        return {
            untracked_variable: 'some variable without reactivity',
        };
    },
    mounted() {
        // the template won't update because the variable doesn't have reactivity
        this.untracked_variable = 'you can use it like a normal variable';
    },
};
</script>

static can be a function or an object (like data).

Custom Merge Strategy

Internally, this plugin uses Vue's $options (specifically $options.static). Therefore you can use custom merge strategies. By default it uses the same strategy for merges as data (Vue.config.optionMergeStrategies.data). Thanks to Akryum for the idea.

Namespace

There's an option called namespaced so that all static data will be namespaced into $static component property. This is solely to avoid conflicts with other options and reactive data (same name, for instance), and helps you to remember which data is or isn't reactive.

import VueStatic from 'vue-static'
Vue.use(VueStatic, {
    namespaced: true,
});

Just use this.$static.variable instead of this.variable in your code and $static.variable instead of variable in your template. Thanks to matheusgrieger for the idea. See here for example usage.

Name

There's an option called name so that the static function/object can be renamed. This addresses the issue that static is a reserved keyword. If you have problems to use static as the default name, you can change it.

import VueStatic from 'vue-static'
Vue.use(VueStatic, {
    name: 'basedata',
});
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].