現在、新しいアプリプロジェクトを開発中です。私にとっても初めてのアプリ開発です。チームで調査と検討を行った結果、開発には 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 システム チュートリアル図
Ubuntu 16.04 はデフォルトで PHP7.0 環境をインストールしますが、PHP7 は一部...
<本文> <div id="ルート"> <h2&...
まあ、あなたはデザインの達人かもしれませんし、あるいはそれは大げさすぎるかもしれませんが、少なくとも...
次のコードを index.html などのデフォルトのホームページ ファイルとして保存し、ルート デ...
目次例1例2例3例4例1 <html> <ヘッド> <title>...
目次序文列挙可能なプロパティ反復可能なオブジェクトforEachメソッドとmapメソッドチェーン呼び...
皆さんの時間は貴重だと承知しているので、プロセス コマンドを直接書き留めておきます。設定できます。原...
序文2 つのテーブル内の同じフィールドの型が異なっていたり、エンコード タイプが異なっていたりするた...
MySql での時間比較の実装unix_timestamp() unix_timestamp 関数は...
目次文章LOCKパラメータアルゴリズムパラメータCOPY TABLE プロセスIN-PLACEプロセ...
ダウンロードしたバージョンは、Zip 解凍版、Windows システムです。長い間 Windows ...
チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念My...
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
1. SSHリモート管理SSH はセキュア チャネル プロトコルであり、主にリモート ログイン、リモ...
アニメーションアニメーションを定義します。 /*アニメーションの各ステップで実行されるアクションを定...