npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vue-component-data-helper-mixin

v1.0.0

Published

A helper mixins that associates a data with a component.

Downloads

3

Readme

vue-component-data-helper-mixin

英語の README は こちら

互換性

| vue-component-data-helper-mixin | Vue | Vuex | 備考 | | ------------------------------- | ------ | ---- | ---- | | v0.x | v2.7.x | v3.x | | | v1.x | v3.x | v4.x | |

解決したい課題

  • Vuex Store を利用した画面を作成すると、以下のボイラープレートを作成する必要がある。
    • データ取得の為の getters
    • データ設定の為の actions, mutations
  • 少量ならば管理できるが項目が大量になると管理が煩雑になってしまう。
  • 煩雑な管理を回避し、Store State 値を画面項目へシンプルな反映/設定を目的として作成した。

概要

  • Store State 項目を、画面コンポーネントにデータを直接バインドできる。
  • Store State の階層構造に対してバインドすることができる。
  • Store State に対して、リアクティブな変更操作を提供する。
  • オプションで項目に表示状態を定義することができ、画面コンポーネントで状態値を自由に利用できる。
  • 表示状態の値は上位を継承する(上位の値と現在の値を鑑みた設定値を利用するには個別に実装が必要)。

公開コンポーネント

| No | 名前 | タイプ | 説明 | 備考 | | --: | ------------------------------------------------ | ------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------- | | 1 | StoreBindMixin | vue mixin | Store State と入力項目を結びつけるコンポーネント mixin。 | 入力単一項目コンポーネントに設定することを想定。 | | 2 | StorePathMixin | vue mixin | StoreBindMixin で参照する項目の Store State パスを設定する。 | StoreBindMixin を束ねるコンポーネントに設定することを想定する。 | | 3 | StorePath | vue component | StorePathMixin をカスタム利用しない場合の単一コンポーネント。 | | | 4 | setStoreState | method | StoreBindMixin の storeData 設定時に設定する mutation メソッド。 | root store の mutation に設定する。 | | 5 | StateSetPayload | type | mutation に設定した setStoreState の Payload。 | generics を利用して viewState のデータ型を指定可能。 | | 6 | ViewStateTree | type | Store State に設定する viewState の tree データ型。 | generics を利用して viewState のデータ型を指定可能。 | | 7 | DataBinderInfo | type | StorePathMixin から引き継がれるデータバインド情報。 | ViewState を引継ぐ場合、StorePathMixin をカスタムする。 |

Getting Started

シンプルな input text 項目に Store State の値をバインドを実施する。

1. install package

npm install vue-component-data-helper-mixin

2. store 設定

  1. データバインドしたいデータを定義する。
  2. mutations に setStoreState を設定する。
import Vue from 'vue';
import Vuex from 'vuex';
import { setStoreState } from 'vue-component-data-helper-mixin';

Vue.use(Vuex);

export default new Vuex.Store({
  state: () => ({
    // -- 1 -- "data.card1" を設定
    data: {
      card1: 'card1Value',
    },
  }),
  mutations: {
    // -- 2 --
    setStoreState,
  },
});

3. StoreBindMixin を適用したコンポーネント作成

ここで作成するコンポーネントは TextBindComp.vue とする。

  1. コンポーネントに StoreBindMixin を設定する。
  2. 画面項目に mixin 計算プロパティ storeData を設定する。
<template>
  <!-- 2 -->
  <input type="text" class="txt" v-model="storeData" />
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { StoreBindMixin } from 'vue-component-data-helper-mixin';

export default defineComponent({
  name: 'TextBindComp',
  // -- 1 --
  mixins: [StoreBindMixin],
});
</script>

4. アプリにコンポーネントを設定する

  1. パス設定コンポーネント StorePath を適用する。
  2. 作成した TextBindComp.vue を適用する。
  3. StorePath に mData を設定する。
  4. TextBindComp(StoreBindMixin) に mId を設定する。
<template>
  <div>
    <!-- 3 -->
    <store-path m-data="data">
      <!-- 4 -- TextBindComp では "data.card1" の値を参照する -->
      <text-bind-comp m-id="card1" />
    </store-path>
  </div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { StorePath } from 'vue-component-data-helper-mixin';
import TextBindComp from './TextBindComp.vue';

export default defineComponent({
  name: 'TextBindComp',
  components: {
    // -- 1 --
    StorePath,
    // -- 2 --
    TextBindComp,
  },
});
</script>

実行結果

<div>
  <div>
    <!-- input value = 'card1Value' (from $store.state.data.card1 ) -->
    <input type="text" class="txt" />
  </div>
</div>

使用方法

サンプルを参照。

License

MIT

Copyright (c) 2022 BizLink Co.,Ltd.