現在、新しいアプリプロジェクトを開発中です。私にとっても初めてのアプリ開発です。チームで調査と検討を行った結果、開発には 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 システム チュートリアル図
** Linuxにmysql-8.0.20をインストールする**環境の紹介オペレーティングシステム:...
1. テーブルステートメントを作成します。 テーブル「従業員」を作成します( `emp_no` in...
特殊記号名前付きエンティティ10進数エンコード特殊記号名前付きエンティティ10進数エンコードアルファ...
1: openssl とは何ですか? その機能は何ですか?適用シナリオは何ですか? Baidu 百科...
Linux システムの Swap パーティション、つまり swap パーティションは、一般に仮想メモ...
Node-red をデータベース (mysql) に接続するには、まずコンピューターに MySQL ...
同僚からよく聞かれるのですが、ファイル/ディレクトリを削除すると「操作は許可されていません」というエ...
すべてがファイルです! UNIX はすでにそれを言っています。エリック・レイモンドはこう言いました。...
これは、W3C 組織が HTML4 に対して提示したスタイル推奨事項です。残念ながら、ブラウザが独自...
目次1. ミニプログラム下請け2. Uniapp 下請けアプレット下請けの手順: 1. manife...
IMG タグの基本分析 HTML5 では、img タグには 4 つの要素があります。 (1) src...
この記事では、MySQL group_concat を使用してグループ化されたフィールドを 1 つの...
この記事の例では、カード配布アニメーションを実装するためのJSの具体的なコードを参考までに共有してい...
1. Dockerをインストールするまず Linux 環境を開き、次のコマンドを入力してインストール...
CSS3 はアニメーションを作成でき、多くの Web ページのアニメーション画像、Flash アニメ...