15.vue.jsのvuexでカウンター:index.html
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
15.vue.jsのvuexでカウンター:index.html [2019/01/26] – [CounterコンポーネントからVuexの利用] adash333 | 15.vue.jsのvuexでカウンター:index.html [2019/02/23] (現在) – [15.Vue.jsのvuexでカウンター] adash333 | ||
---|---|---|---|
行 1: | 行 1: | ||
====== 15.Vue.jsのvuexでカウンター ====== | ====== 15.Vue.jsのvuexでカウンター ====== | ||
- | vuexをなんとかして理解するために簡単なアプリを写経しています。前回の[[14.vue.jsのvuexで入力フォーム: | + | vuexをなんとかして理解するために簡単なアプリを写経しています。前回の<wrap hi>[[14.vue.jsのvuexで入力フォーム: |
今回は、『カウンターアプリ』を作成しながら、vuexの理解を深めたいと思います。 | 今回は、『カウンターアプリ』を作成しながら、vuexの理解を深めたいと思います。 | ||
行 23: | 行 23: | ||
今回は、https:// | 今回は、https:// | ||
- | |||
- | |||
- | |||
- | |||
ソースコード | ソースコード | ||
- | + | https:// | |
- | + | https:// | |
Demo | Demo | ||
+ | https:// | ||
+ | {{: | ||
===== 開発環境 ===== | ===== 開発環境 ===== | ||
行 298: | 行 294: | ||
}, | }, | ||
</ | </ | ||
+ | |||
+ | src/ | ||
+ | (変更前) | ||
+ | {{: | ||
+ | (変更後) | ||
+ | {{: | ||
+ | |||
+ | カウンターの初期値や、+1、-1の状態管理をvuexに移動しても、ちゃんと、カウンターが動くことが確認できました。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ここまでのソースコード(CodeSandeboxバージョン) | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===== mapGetters, mapActionsを用いてVuexのコードを少し発展させる ===== | ||
+ | |||
+ | mapState, mapGetters, mapMutations, | ||
+ | (いきなりこれを見ると、『わけわからん状態』ですが、上記の経過をたどった後であれば、何となく分かった気になれる気がします。) | ||
+ | |||
+ | < | ||
+ | import { | ||
+ | mapState, | ||
+ | mapGetters, | ||
+ | mapMutations, | ||
+ | mapActions | ||
+ | } from ' | ||
+ | </ | ||
+ | |||
+ | stateとgetterは算出プロパティcomputedに登録します。 | ||
+ | mutationとactionはメソッドmethodsに登録します。 | ||
+ | |||
+ | < | ||
+ | computed: { | ||
+ | // ローカルの算出プロパティ | ||
+ | myProperty() { ... }, | ||
+ | ...mapGetters([ | ||
+ | // this.messageをstore.getters.messageにマッピング | ||
+ | ' | ||
+ | ]), | ||
+ | // メソッド名を変更したい場合はオブジェクトで定義 | ||
+ | ...mapGetters({ | ||
+ | // this.messageAliasをstore.getters.messageにマッピング | ||
+ | messageAlias: | ||
+ | }) | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | カッコが、[]なのか、{}なのか、紛らわしいです。[]は配列、{}はオブジェクトなのだと思います。 | ||
+ | |||
+ | 組み合わせる必要がなければ、以下のように、オプションに直接、登録することもできるとのことです。 | ||
+ | (しかし、これは汎用的ではないと思われます。) | ||
+ | < | ||
+ | computed: mapGetters([' | ||
+ | methods: mapActions([' | ||
+ | </ | ||
+ | |||
+ | 上記のカウンターアプリを、mapGetters, | ||
+ | |||
+ | < | ||
+ | import { | ||
+ | mapGetters, | ||
+ | mapActions | ||
+ | } from ' | ||
+ | |||
+ | export default { | ||
+ | name: ' | ||
+ | computed: { | ||
+ | count () { | ||
+ | return this.$store.getters.getCount | ||
+ | } | ||
+ | }, | ||
+ | methods: { | ||
+ | ...mapActions([ | ||
+ | ' | ||
+ | ' | ||
+ | ]) | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | (変更前) | ||
+ | {{: | ||
+ | |||
+ | (変更後) | ||
+ | {{: | ||
+ | |||
+ | 今回のアプリ作成はここまでとなります。 | ||
+ | |||
行 327: | 行 412: | ||
===== ソースコード ===== | ===== ソースコード ===== | ||
ソースコード | ソースコード | ||
- | + | https:// | |
DEMO | DEMO | ||
+ | https:// | ||
15.vue.jsのvuexでカウンター/index.html.1548481299.txt.gz · 最終更新: 2019/01/26 by adash333