現在、新しいアプリプロジェクトを開発中です。私にとっても初めてのアプリ開発です。チームで調査と検討を行った結果、開発には 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 システム チュートリアル図
この記事では、Taobao商品詳細のカルーセルを実現するためのvideojs+swiperの具体的な...
効果確認アドレス:ツアープラン(uplanok.com) コード: img{幅: 100%;境界線の...
この記事では、例を使用して、MySQL の継続的な集計の原理と使用方法を説明します。ご参考までに、詳...
1. 従来のbinlogマスタースレーブレプリケーション、エラー報告をスキップする方法 mysql&...
SQL はメイントランクです。なぜ私はこのように理解するのでしょうか。技術的な観点からリレーショナル...
1 はじめにApache Storm は、Hadoop と同様に、大量のデータを処理するために使用で...
目次Cocos Creator のリソース管理に関する問題リソースの依存関係リソースの使用レスローダ...
JS の async 関数と await キーワード 関数ヘルワールド() { 「こんにちは!美しい...
HTML では、一般的な URL はさまざまな方法で表現されます。相対 URL:コードをコピーコード...
場合によっては、データ内のデータを再利用する必要がありますが、データ内のデータはさまざまなフォーム、...
目次クラスコンポーネントイベントバインディング関数コンポーネントイベントバインディング要約するRea...
一般的なフォーム プロンプトは常にフォームのスペースを占有し、フォームが長くなったり広くなったりして...
目次識別子の長さ制限権限テーブルの範囲フィールドの長さ制限データベースとテーブルの数の制限テーブルサ...
MySQL の日付型単一行関数: CURDATE()またはCURRENT_DATE()は現在の日付を...
マイクロソフトIIS (Internet Information Server) は、Microso...