質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

Q&A

解決済

2回答

1106閲覧

Vuex バインディングがうまくいかない

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

0グッド

0クリップ

投稿2020/06/08 01:56

編集2020/06/08 01:58

Vuexの勉強でストアというものを試してみたのですが、
バインディングができていないようです。
watch等を使わないといけないのでしょうか?

解決したいこと

index.jsのtestListの値が変わった時、
index.vueのリスト(li)に反映したい

index.js

js

1export const state = () => ({ 2 testList: [], 3}) 4 5export const mutations = { 6 addList(state, list){ 7 state.testList[state.testList.length] = list; 8 console.log(state.testList); #@1 9 }, 10} 11 12export const getters = { 13 getList: state => { 14 return state.testList 15 } 16}

index.vue

js

1・・・中略 2 3<button @click="getTestList()"> 4<li v-for="(val, index) in $store.getters.getList" :key="index"> 5{{ val.id }} 6</li> 7 8・・・中略 9 10methods: { 11 getTestList() { 12 const response = this.$axios.$get("http://localhost/testapi") 13 .then( response => { 14 this.$store.commit('addList', response.result) 15 console.log(this.$store.getters.testList); #@2 16 }) 17 .catch( error => { 18 console.log(error) 19 }) 20 } 21}, 22 23・・・中略

確認したこと

@1のconsole.logでは確かに値が変更されており、
@2でも追加後の値が確認できています。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

@1 のところの配列の挿入に push() を使用してください。

リストレンダリング — Vue.js

投稿2020/06/08 04:22

aaharu

総合スコア441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/06/08 15:11

ありがとうございます! 変更メソッドというのがあるのですね。 これは連想配列もpushできて便利。。
guest

0

確信はないのですが Vue.set を使ってみてください。

diff

1- state.testList[state.testList.length] = list; 2+ Vue.set(state.testList, state.testList.length, list); 3

投稿2020/06/08 02:08

nico25

総合スコア830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/06/08 15:11

ありがとうございます! 解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問