現在、新しいアプリプロジェクトを開発中です。私にとっても初めてのアプリ開発です。チームで調査と検討を行った結果、開発には Vue3+Vant フロントエンドコンポーネントモデルを使用することにしました。これまでいくつかのプロジェクトで Vue2 を使用してきましたが、今回はフロントエンド開発に Vue3 を使用してみることにしました。 Enterキーを押して検索し、詳細ページに入ります 履歴ページ 履歴をクリア まず、js ファイルを作成します。この js ファイルには、主に履歴情報の追加とすべての履歴情報の削除の機能が含まれています。 エクスポートデフォルト{ // 検索ホームページ履歴クエリレコードを追加する addSearchHistory(state, payload) { // リストにレコードが含まれている場合は削除します const index = state.searchHistoryList.indexOf(payload); (インデックス>-1)の場合{ state.searchHistoryList.splice(インデックス、1); } state.searchHistoryList.unshift(ペイロード); // 履歴レコードの最大数は 20 です。const count = state.searchHistoryList.length; state.searchHistoryList.splice(20, カウント); }, // ホームページの検索履歴をクリアする clearSearchHistory(state) { 状態.searchHistoryList = []; }, }; Vue コードブロック <テンプレート> <!-- 検索ボックス --> <検索バー @searchClick="検索クリック" :placeholderValue="state.placeholderValue" :searchVal="state.searchVal"> </検索バー> <div class="検索"> <!-- 検索履歴 --> <div class="history" v-if="state.isShowHistory"> <span class="proHot">検索履歴</span> <span class="delHotSearch" @click="delHostClick">履歴を消去</span> <!-- 履歴レコード情報を保存します--> <div class="searchBtn-div"> <span v-for="(item, index) in state.historyList" :key="index" class="searchValBtn" > <バンボタン ラウンド サイズ="小" @click="searchValClick(アイテム)" >{{ アイテム }} </バンボタン> </span> </div> </div> </div> </テンプレート> <スクリプト> 輸入 { マウント済み、 反応的、 現在のインスタンスを取得、 } から 'vue'; 'vant' から { Toast, Dialog } をインポートします。 '@/components/SearchBar.vue' から searchBar をインポートします。 'vue-router' から useRouter をインポートします。 'vuex' から useStore をインポートします。 エクスポートデフォルト{ コンポーネント: 検索バー、 }, 設定() { 定数ルーター = useRouter(); 定数ストア = useStore(); const { プロキシ } = getCurrentInstance(); 定数状態 = リアクティブ({ isShowHistory: '', // 履歴を表示するかどうか searchVal: '', // 検索キーワード placeholderValue: '商品/情報/規格/原材料/企業を検索', historyList: [], // 履歴検索データ}); // 検索するには入力してください const searchClick = (val) => { store.commit('addSearchHistory', val); // router.push({ path: '/search-detail', query: { searchVal: val } }); }; // 履歴をクリア const delHostClick = async () => { ダイアログ.確認({ メッセージ: 「検索履歴を削除してもよろしいですか?」 '、 }).then(() => { store.commit('clearSearchHistory', store); 状態.isShowHistory = false; トースト({ メッセージ: '正常に削除されました'、 位置: '下'、 }); }); }; // 履歴検索レコード情報を初期化して取得する onMounted(async () => { // 履歴検索情報を取得します。state.historyList = store.state.searchHistoryList; // 表示履歴検索を初期化するかどうかを決定します if (state.historyList.length > 0) { 状態.isShowHistory = true; } それ以外 { 状態.isShowHistory = false; } }); 戻る { 州、 検索クリック、 delHostクリック、 }; }, }; </スクリプト> <style lang="less" スコープ> </スタイル> Vue コードを直接コピーして貼り付けると、多くの業務コードが削除され、残っているのは主に履歴検索レコードのコードであるため、直接使用できない可能性があります。主な焦点は3つあります。 useStoreのご紹介 'vuex' から useStore をインポートします。 定数ストア = useStore(); 検索履歴を初期化する // 履歴検索レコード情報を初期化して取得します // このページが読み込まれるたびに、このメソッドが最初に呼び出され、最新情報が取得されます onMounted(async () => { // 履歴検索情報を取得します。state.historyList = store.state.searchHistoryList; // 表示履歴検索を初期化するかどうかを決定します if (state.historyList.length > 0) { 状態.isShowHistory = true; } それ以外 { 状態.isShowHistory = false; } }) 検索ボックスは検索イベントをトリガーし、検索情報をストアに保存します。 // 子コンポーネントがイベントを発行し、親コンポーネントが呼び出します const searchClick = (val) => { // 検索値を履歴に保存する store.commit('addSearchHistory', val); // ルートのリダイレクトは無視できます // router.push({ path: '/search-detail', query: { searchVal: val } }); }; 履歴をクリア // 履歴をクリア const delHostClick = async () => { ダイアログ.確認({ メッセージ: 「検索履歴を削除してもよろしいですか?」 '、 }).then(() => { // 履歴をクリアする情報store.commit('clearSearchHistory', store); 状態.isShowHistory = false; トースト({ メッセージ: '正常に削除されました'、 位置: '下'、 }); }); }; 上記は、Vue3+Vantコンポーネントを使用してアプリの検索履歴機能を実装する詳細です。Vue検索履歴の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: MySQL SHOW PROCESSLISTはトラブルシューティングの全プロセスを支援します
>>: VMware 15.5 バージョンのインストール Windows_Server_2008_R2 システム チュートリアル図
サイト全体のフォントを設定することは、常にシンプルでありながら難しい作業です。深く掘り下げていくと、...
目次情事の概念取引の状態取引の役割取引の特徴トランザクション構文トランザクション対応ストレージエンジ...
目次概要0. JavaScriptとWeb開発の基礎1. Vueの基本概念Vue コア機能コンポーネ...
MySQL5.7マスタースレーブ構成の実装方法、具体的な内容は次のとおりですインストール環境:マスタ...
目次1. ChildNodes属性のトラバーサル2. 要素シリーズ属性のトラバーサル以前は、chil...
会社の要件により、異なる場所にある 2 つの nginx サーバーを同じマシンにインストールする必要...
1. 元のmariadbを削除します。削除しないとmysqlをインストールできません。 mariad...
仮想マシンをインストールするときに、「VMware ワークステーションはデバイス/資格情報ガードと互...
MySQLクエリ期間の交差使用シナリオデータベース テーブルには、starttime と endti...
目次1. 効果の実証2. 実装チュートリアル3. 最後に、完全なコードを添付します4. その他の右ク...
この記事では、VMware 環境下で Ubuntu と Windows 間でファイルを共有する方法を...
目次前提TypeScript と JavaScriptコードエディタの選択TypeScriptを学ぶ...
この記事では、WeChatアプレットで写真を撮ったり、アルバムから写真を選択したりするための具体的な...
この記事では、VMware Workstation14 ProにUBuntu17.04をインストール...
需要背景:ミニプログラムページに GIF ダイナミック画像を挿入しますが、GIF 画像は通常サイズが...