今回は、vuex+localstorage のストレージの動的監視の手順について詳しく説明します。 vuex+localstorage のストレージの動的監視の 注意事項 については、次のとおりです。
分析: vue はローカルストレージの変更を監視できません。 Localstorage は主に異なるページ間で値を転送するために使用されますが、vue はコンポーネント間で値を転送するのに適しています。同じデータを共有し、情報を保存したい、またはページが更新されたときにデータが失われないようにしたいコンポーネントの場合 (vuex によって保存された値はページが更新されると失われ、localstorage はローカル ブラウザに保存されます)、次のことができます。 vuex+localstorage メソッドを使用します。
vuex と storage の違いについて
1. 最も重要な違い: vuex はメモリに保存されますが、localstorage はファイルの形式でローカルに保存されます
2. vuex は値の転送に使用されます。 Localstorage は主に、異なるページ間で値を転送するために使用されます。
3. 永続性: vuex に保存されている値はページが更新されると失われますが、localstorage は失われません。
注: 多くの学生は vuex の代わりに localstorage を使用できると考えていますが、変更されていないデータについては確かに可能ですが、2 つのコンポーネントがデータ ソース (オブジェクトまたは 配列) を共有している場合、コンポーネントの 1 つがデータ ソースを変更すると、別のコンポーネントが変更に応答する場合、localstorage ではそれができません。その理由は違い 1 です。
vuex リファレンスドキュメントについて: http://vuex.vuejs.org/zh-cn/index.html
実装プロセス: ホーム ページにユーザーのアバター情報を表示し、パブリック コンポーネントのヘッダー コンポーネント内の個人情報を変更します。たとえば、ユーザーが個人情報を変更すると、ホームページ上の画像がリアルタイムで変更されます。アバター情報が保存および更新されていない場合、ユーザーは各変更後にページを更新するか、他のページから戻ることによってのみ変更を確認できます。つまり、新しく設定されたアバター情報にはコア コードのみが表示されます。
1. まず状態に変数を定義します。 State はアプリケーション全体の状態データを保存する役割を果たします。後で this.$store.state を使用して状態を直接取得できます。 vuex が提供する補助関数 mapState を使用して、状態を計算されたプロパティにマップすることもできます。
const state = { imgInfo:null //首页头像信息 }
2.mutations はローカルストレージ情報を保存します。突然変異によって状態が変更される可能性があります。これは基本的に、一意のパラメーター値の状態を受け取る、データの処理に使用される関数です。定義された突然変異は同期関数である必要があります。 this.$store.commit(mutationName) は、ミューテーションをトリガーするか、補助関数 mapMutations を使用してトリガー関数をメソッドに直接マップするために使用されるメソッドです。これにより、要素 イベント バインディングで直接使用できます。
export const SETIMGINFO = 'SETIMGINFO' [SETIMGINFO] (state,info) { state.imgInfo=info localStorage.setItem('imgInfo',info) }
3. getter でローカルストレージ情報を取得します。一部の状態では二次処理が必要なため、ゲッターを使用できます。 this.$store.getters.valueName を通じて派生状態にアクセスします。または、補助関数 mapGetters を直接使用して、ローカルの計算されたプロパティにマップします。
getImgInfo(state){ if(localStorage.getItem('imgInfo')){ state.imgInfo=localStorage.getItem('imgInfo') } return state.imgInfo }
4. ストレージを操作する必要があるページでmapMutations関数を参照します
import {mapMutations} from 'vuex' //引入mapMutations ...mapMutations([ 'SETIMGINFO' ]), this.SETIMGINFO(this.imgInfo) //在需要的地方引用 mutations里面定义的方法
import {mapGetters} from 'vuex' computed:{ ...mapGetters([ 'getImgInfo' ]) }, watch:{ //动态监听state的变化,实时改变页面的数据 getImgInfo: function(li) { //li就是改变后的state里面的imgInfo let vm = this; this.imgInfo=li //data声明一个变量,在html引用。如果storage的值发生变化就实时刷新变量的值。 } },
<img :src="imgInfo?imgInfo:info.avatar"> //三元不等式,如果state发生变化有值就赋值给img标签,如果没有即刚进页面就赋值给create生命周期函数中从接口读出来的数据
以上がvuex+localstorage の動的監視ストレージ手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。