vuex ベースのショッピングカート機能の実装

vuex ベースのショッピングカート機能の実装

この記事の例では、ショッピングカート機能を実装するためのvuexの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

まず効果を見てみましょう:

コード:

<テンプレート>
 <div class="ホーム">
 <h1>Vuex ショッピングカートの例</h1>
 <追加元> </追加元>
 <ショップカート></ショップカート>
 </div>
</テンプレート>

<スクリプト>
'./Add.vue' から AddFrom をインポートします。
'./ShopCart.vue' から ShopCart をインポートします。
// @ は /src へのエイリアスです
// '@/components/HelloWorld.vue' から HelloWorld をインポートします
エクスポートデフォルト{
 名前: 'ホーム'、
 コンポーネント:
 追加元、
 ショッピングカート
 },

};
</スクリプト>
<スタイル>
テーブル {
 幅: 800ピクセル;
 マージン: 0 自動;
 境界線: 1px 実線 #ccc;
 境界線の間隔: 0;
}
tbody th、
tボディtd {
 境界線: 1px 実線 #ccc;
 テキスト配置: 中央;
}
h1{
 テキスト配置: 中央;
}
。追加{
 幅: 800ピクセル;
 マージン: 0 自動;
}
</スタイル>

親コンポーネント

<テンプレート>
 <div class="add">
 <div class="from-group">
 <label for="">製品番号</label>
 <input type="text" v-model="shop.id" placeholder="商品番号を入力してください">
 </div>
 <div class="from-group">
 <label for="">製品名</label>
 <input type="text" v-model="shop.name" placeholder="商品名を入力してください">
 </div>
 <div class="from-group">
 <label for="">製品価格</label>
 <input type="text" v-model="shop.price" placeholder="商品価格を入力してください">
 </div>
 <div class="from-group">
 <label for="">商品の数量</label>
 <input type="text" v-model="shop.count" placeholder="商品の数量を入力してください">
 </div>
 <div class="from-group">
 <button @click="add">商品を追加</button>
 </div>
 </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
 名前: '追加',
 データ() {
 戻る {
 店:{}
 };
 },
 方法:{
 追加(){
 
 this.$store.dispatch("addShopList",this.shop)
 this.shop = {
 id:"",
 名前:""、
 価格:""、
 カウント:""
 }
 }
 }
};
</スクリプト>

<スタイルスコープ>
 。追加{
 幅: 800ピクセル;
 テキスト配置: 中央;
 }
</スタイル>

「バッシュ」

<テンプレート>
 <div class="ショップカート">

 <テーブル>
 <ヘッドボーダー>
 <tr>
  <th>製品番号</th>
  <th>製品名</th>
  <th>製品価格</th>
  <th>商品の数量</th>
  <th>小計</th>
  <th>オペレーション</th>
 </tr>
 </thead>
 <tbody v-if="ショップの長さ > 0">
 <tr v-for="(i, e) ショップ内" :key="e">
  <td>{{ i.id }}</td>
  <td>{{ i.name }}</td>
  <td>{{ i.price }}</td>
  <td>
  <button @click="add(e)">+</button>
  <input type="text" v-model="i.count" />
  <button @click="delet(e)">-</button>
  </td>
  <td>¥{{ i.price * i.count }}</td>
  <td><button @click="del(e)">削除</button></td>
 </tr>
 </tbody>
 <tfoot>
 <tr>
  <td colspan="6" align="right">合計: {{ total }}</td>
  <button @click="clear">ショッピングカートをクリア</button>
 </tr>
 </tfoot>
 </テーブル>
 </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
 名前: 'Shop-Cart'、
 コンポーネント: {},
 データ() {
 戻る {};
 },
 計算: {
 店() {
 this.$store.getters.getlist を返します。
 },
 合計() {
 this.$store.getters.getShopTotal を返します。
 }
 },
 メソッド: {
 削除(e) {
 // this.$store.dispatch()
 this.$store.dispatch('remoteList', e);
 },

 追加(e) {
 this.$store.dispatch('addList', e);
 },
 削除(e) {
 this.$store.dispatch('deleteList', e);
 },

 クリア() {
 this.$store.dispatch('clearList', []);
 }
 }
};
</スクリプト>

vuex コンポーネント

'vue' から Vue をインポートします
'vuex' から Vuex をインポートします

Vue.use(Vuex)


デフォルトの新しいVuex.Storeをエクスポートします({
 州: {
 リスト: [{
 id: 1,
 名前: 「わぁ、ハハハ」
 価格: 3,
 カウント: 0
 },
 {
 id: 2,
 名前: 「わはは」、
 価格: 3,
 カウント: 0
 }
 ]
 },
 ゲッター: {
 //ショッピングカートデータを取得する getlist(state) {
 状態リストを返す
 },
 //商品の合計価格 getShopTotal(state,index) {
 結果を 0 にします。
 state.list.forEach((item, index) => {
 結果 += アイテム.価格 * アイテム.数
 })
 結果を返す
 },
 },
 突然変異:
 //ショッピングカート内の単一のデータを削除する remoteList(state,index) {
 state.list.splice(インデックス、1);
 console.log("aaa",状態)
 },
 //商品数を増やす addList(state, index) {
 state.list[インデックス].count++;
 },
 //商品数を減らす deleteList(state, index) {
 state.list[インデックス].count--;
 if(state.list[index].count<=0){
 状態.リスト[インデックス].カウント = 0
 戻る ;
 }
 },

 // ショッピングカートをクリアする clearList(state, arr) {
 状態リスト = arr
 },
 addShopList(状態、ショップ){
 state.list.push(ショップ)
 }
 },
 //アクションを使用してミューテーションメソッドを呼び出します。アクション: {
 リモートリスト({
 専念
 }、 索引) {
 commit("remoteList", インデックス)
 },
 リストを追加します({
 専念
 }、 索引) {
 コミット("addList", インデックス)
 },
 リストを削除します({
 専念
 }、 索引) {
 コミット("deleteList", インデックス)
 },
 リストをクリア({
 専念
 }, 編曲) {
 コミット("clearList", arr)
 },
 addShopList({コミット},ショップ){
 コミット("addShopList",ショップ)
 }
 },
 モジュール: {}
})

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vuexはシンプルなショッピングカートを実装します
  • Vuex は小さなショッピングカート機能を実装します
  • Vuexはショッピングカートの追加、削減、削除を実装します
  • Vuex がショッピングカート機能を実現
  • vuex を使用してショッピングカート機能をエレガントに実装するサンプルコード
  • vuex で実装されたシンプルなショッピングカート機能の例
  • vuexを使用してショッピングカートH5ページのサンプルコードを作成しました
  • Vuex はシンプルなショッピングカート機能を実装します

<<:  ネイティブJavaScriptでカルーセルを実装する

>>:  Vue でシンプルな無限ループスクロールアニメーションを実装する例

推薦する

MySQL の中国語文字化け問題の解決方法

1. LinuxのMySQLで中国語の文字化けが発生する。以下の操作を実行する。 vi /etc/m...

Vue3.xはコンポーネント通信にmitt.jsを使用します

目次クイックスタート使い方基本原則Vue2.x はコンポーネント通信に EventBus を使用しま...

ドラッグ可能で編集可能なガントチャートの詳細な説明(HighchartsはVueとReactで使用できます)

序文Excel は強力で、広く使用されています。 Web アプリケーションの登場と改善に伴い、ユーザ...

CentOS 7でsambaを使用してフォルダーを共有するための完全な手順

序文Samba は、サーバー プログラムとクライアント プログラムで構成され、Linux システム上...

CSS における要素の表示モード

CSS では、要素タグは、要素の表示モードの違いに応じて、インラインレベル要素とブロックレベル要素の...

HTML 学習ノート - HTML 構文の詳細な説明 (必読)

1. HTML マークアップ言語とは何ですか? HTML は、Web ページの情報を表すマークアッ...

MySQL 8.0.13 のインストールと設定方法のグラフィックチュートリアル (Win10 の場合)

MySQL 8.0.13 のインストールと設定方法を皆さんと共有したいと思います。お役に立てれば幸...

MySQL 5.7.17 のインストールと設定方法のグラフィックチュートリアル (Win7 の場合)

Windows 7 で MySQL 5.7.17 をインストールする方法についてのグラフィック チ...

LinuxのCentos7でmysql5.7.29を構築する詳細なプロセス

1. MySQLをダウンロードする1.1 ダウンロードアドレスhttps://downloads.m...

Mysql 8.0.17 winx64バージョンのインストール中に発生した問題を解決する

1. my.iniファイルを手動で作成して追加する # クライアントセクション # --------...

Docker を使用して Redis マスター スレーブ レプリケーション クラスターを構築する

マスタースレーブレプリケーションモードのクラスターでは、通常、1 つのマスターノードと 2 つ以上の...

HTML の <input> タグの詳細な説明と、それを無効にする方法

定義と使用法<input> タグはユーザー情報を収集するために使用されます。 type ...

MySQLの高可用性アーキテクチャの詳細な説明

目次導入MySQL 高可用性マスター 1 つとバックアップ 1 つ: MySQL マスター スレーブ...

非ルートユーザーを使用してDockerコンテナでスクリプト操作を実行する

アプリケーションをコンテナ化した後、Docker コンテナを起動すると、デフォルトで root ユー...

Excel エクスポートは docker 環境では常に失敗する

Excel のエクスポートは、docker 環境では常に失敗します。最も直接的な原因は、中国語フォン...