今回は、vuex state+mapState の実際のプロジェクトの分析をお届けします。vuex state+mapState の注意点は何ですか? 以下は実践的なケースです。
まず、vue cli を使用して独自の vue プロジェクトを構築します
1.npm i -g vue-cli
2.vue init webpack sell (sell はプロジェクト名です)
3. (このプロセスでは) を最後まで入力します。 vue-router、es6 構文チェックなどの依存パッケージをインストールするかどうかを尋ねられます。個人的な習慣や趣味に基づいて Y/N を選択してください)
4.npm i (これはインストール プロジェクトの依存パッケージです) )
5. npm run dev (vue プロジェクトを開始します) この時点で、ページに vue ロゴが表示されていれば、vue プロジェクトの基本的な構築が完了したことを意味します。その後、不要なコンポーネントを削除できます
6. Webpack sell はデフォルトでは vuex をインストールしないので、vuex をインストールする必要があります。コマンドラインで ctrl+c を 2 回押してサーバーを終了し、npm install vuex –save で vuex をインストールします。
7.あなたの src ディレクトリに helloVuex という名前を付けましょう (この名前はあなたがやりたいことを何でもして幸せになれます) このコンポーネントは主にメインコンテナとして使用され、コンテンツを表示するだけです
8. 次に、好きな名前の新しいコンポーネントを作成します (私はそうします)ここでは表示コンポーネントと呼びます) で状態を受け入れます
9. 次に、src ディレクトリに store という名前の新しいフォルダーを作成し、test.js という名前のストアの下に js ファイルを作成します (ここでのストアはフロントです)。状態管理には vuex を使用します。Store は vuex のコアであるため、store という名前を付けます。src ディレクトリに新しい store ファイルを作成し、store ディレクトリに新しい test.js ファイルを作成します。 。 vuex を使用する前に、vue にそれを使用するように指示する必要があることがわかります。Vue.use(Vuex); ここで管理する変数の数は 1 つだけなので、ストア オブジェクトを作成するときに、パラメーターをコンストラクターに渡すだけです。状態で 1 カウント、0 に初期化されます。
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { count: 0 } export default store
これで、すべてのステータス、つまり変数が test.js に配置されました。では、コンポーネントはどのようにしてステータス変更値を取得できるでしょうか?ここでの操作手順は 2 つあります
1. Vue はストア オブジェクトをルート インスタンスに注入する注入メカニズムを提供します。 vue のルート インスタンスは新しい Vue コンストラクターであり、すべてのサブコンポーネントで this.$store がストア オブジェクトを指します。 test.jsではストアをエクスポートしており、new Vue()がmain.js内に公開されているので、main.jsにストアを直接導入して注入することができます。
import Vue from 'vue' import App from './App' import router from './router' import store from './store/test' Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ el: '#app', router, store, template: '<app></app>', components: { App } })
2. 子コンポーネントで、計算された属性を使用します。計算された属性は、依存関係に基づいて自動的に更新されます。したがって、ストア内の状態が変化する限り、自動的に変化します。 display.vue に次の変更を加えます。サブコンポーネントの This.$store はストア オブジェクトを指します。 test.js のカウントを 8 に変更すると、ページ上では 8 になります。
<template> <p> </p> <h3 id="Count-is-count">Count is {{count}}</h3> </template> <script> export default { computed: { count () { return this.$store.state.count } } } </script>
3. ステータス値は計算された属性を通じて取得できますが、コンポーネント内の各属性 (カウントなど) は関数です。10 個ある場合、これを返すには 10 個の関数を記述する必要があります。 . $store.state、あまり便利ではありません。 Vue は、状態をコンポーネントに直接マップする、mapState 関数を提供します。
もちろん、使用する前にmapStateを導入する必要があります。これは、オブジェクトまたは配列を受け入れる 2 つの方法で使用できます。まだdisplay.vueコンポーネントの下にあります。
オブジェクトの使用法は次のとおりです:
<script> import {mapState} from "vuex"; // 引入mapState export default { // 下面这两种写法都可以 computed: mapState({ count: state => state.count // 组件内的每一个属性函数都会获得一个默认参数state, 然后通过state 直接获取它的属性更简洁 count: 'count' // 'count' 直接映射到state 对象中的count, 它相当于 this.$store.state.count, }) } </script>
配列メソッドは次のとおりです:
<script> import {mapState} from "vuex"; export default { computed: mapState([ // 数组 "count" ]) } </script>
4, 最後に質問が 1 つあります。コンポーネント内にも計算された属性がある場合はどうなりますか?それはmapStateに属しません。次に、mapState 関数で生成されたオブジェクトをオブジェクト セグメンテーションを使用して 1 つずつ分割します。最初と同様に、計算された属性を 1 つずつ列挙します。10 個の属性がある場合、10 個の関数を記述します。
... es6 では分割に使用されますが、分割できるのは配列のみです。 ECMAScript stage-3 でオブジェクトを分割できるため、この時点では babel-stage-3 も使用されます。インストールが完了したら、忘れずに追加してください。 babel in babelrc 設定ファイルに、stage-3,
と記述します。それ以外の場合は、常にエラーが報告されます。ページに p タグを追加して、コンポーネントの計算の習熟度を示します
babelrc
{ "presets": [ ["env", { "modules": false, "targets": { "browsers": ["> 1%", "last 2 versions", "not ie <p style="text-align: left;">display.vue コンポーネントの変更後</p><pre class="brush:php;toolbar:false"><template> <p> </p> <h3 id="Count-is-count">Count is {{count}}</h3> <p>组件自己的内部计算属性 {{ localComputed }}</p> </template> <script> import {mapState} from "vuex"; export default { computed: { localComputed () { return this.count + 10; }, ...mapState({ count: "count" }) } } </script>
効果を確認するには、test.js の state.count を 10 に変更します
VuexでのmapStateの使い方を見てみましょう
今日はVuexを使っていて、私の無知とも言える落とし穴に遭遇しました。私のコードにエラーがあります。本当に雷鳴るよ~~~~~~
index.js
import Vue from 'vue' import Vuex from 'vuex' import mutations from './mutations' import actions from './action' import getters from './getters' Vue.use(Vuex) const state = { userInfo: { phone: 111 }, //用户信息 orderList: [{ orderno: '1111' }], //订单列表 orderDetail: null, //订单产品详情 login: false, //是否登录 } export default new Vuex.Store({ state, getters, actions, mutations, }) computed: { ...mapState([ 'orderList', 'login' ]), }, mounted(){ console.log(typeof orderList); ==>undefind console.log(typeof this.orderList)==>object }
mapState通过扩展运算符将store.state.orderList 映射this.orderList 这个this 很重要,这个映射直接映射到当前Vue的this对象上。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上がvuex state+mapState実践プロジェクトの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptコアデータ型は、ブラウザとnode.jsで一貫していますが、余分なタイプとは異なる方法で処理されます。 1)グローバルオブジェクトはブラウザのウィンドウであり、node.jsのグローバルです2)バイナリデータの処理に使用されるNode.jsの一意のバッファオブジェクト。 3)パフォーマンスと時間の処理にも違いがあり、環境に従ってコードを調整する必要があります。

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

Dreamweaver Mac版
ビジュアル Web 開発ツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ドリームウィーバー CS6
ビジュアル Web 開発ツール
