GithubHelp home page GithubHelp logo

renatodeleao / vue-static Goto Github PK

View Code? Open in Web Editor NEW

This project forked from samuelantonioli/vue-static

0.0 1.0 0.0 7 KB

Support for non-reactive variables in Vue components

License: MIT License

JavaScript 100.00%

vue-static's Introduction

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',
});

vue-static's People

Contributors

samuelantonioli avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.