vue3 は高度な検索コンポーネントを作成します

Vue3 で高度な検索コンポーネントを作成するには、次の手順に従います。

  1. コンポーネントの作成

Vue3 プロジェクトでは、単一ファイル コンポーネントを通じて高度な検索コンポーネントを作成できます。たとえば、 AdvancedSearch.vue ファイル内でコンポーネントを定義します。

<template>
  <div>
    <!-- 高级搜索表单 -->
  </div>
</template>

<script>
export default {
  name: "AdvancedSearch",
};
</script>

<style>
/* 组件样式 */
</style>
  1. コンポーネントのプロパティを定義する

外部から渡されるパラメータを受け取るために、コンポーネントで props 属性を定義します。次に例を示します。

export default {
  name: "AdvancedSearch",
  props: {
    fields: {
      type: Array, // 表单字段配置
      required: true,
    },
    value: {
      type: Object, // 表单值
      default: () => ({}),
    },
  },
};

このうち、fields 属性はフォームフィールドの構成を定義するために使用され、value 属性はフォームのデフォルト値を定義するために使用されます。

  1. レンダリングフォーム

fields フォーム コンポーネントを作成し、属性のフィールド構成に従って レンダリングします。次に例を示します。

<template>
  <div>
    <form @submit.prevent="handleSubmit">
      <div v-for="field in fields" :key="field.name">
        <label :for="field.name">{
   
   { field.label }}</label>
        <component :is="field.type" v-model="value[field.name]" :options="field.options"></component>
      </div>
      <button type="submit">搜索</button>
    </form>
  </div>
</template>

コンポーネント内のループを使用して v-for 各フォーム フィールドをレンダリングし、 v-model 命令を使用してフォーム値をバインドし、 <component :is> ラベルを使用して対応するフォーム コンポーネントを動的に読み込みます。

  1. フォームコンポーネントを定義する

フォームフィールドのタイプに応じて対応するフォームコンポーネントを定義し、コンポーネントにバインディングとイベント応答ロジックを入力します。たとえば、 Input.vue 入力ボックス フォーム コンポーネントを次のように定義します。

<template>
  <input :value="value" @input="$emit('input', $event.target.value)">
</template>

<script>
export default {
  props: {
    value: { // 绑定值
      type: String,
      default: "",
    },
  },
};
</script>
  1. フォームを送信する

コンポーネント内で handleSubmit フォーム送信アクションを処理するメソッドを定義します。例えば

export default {
  name: "AdvancedSearch",
  props: {
    fields: {
      type: Array,
      required: true,
    },
    value: {
      type: Object,
      default: () => ({}),
    },
  },
  methods: {
    handleSubmit() {
      // 提交表单事件
      this.$emit("submit", this.value);
    },
  },
};

フォームが送信されると、 submit フォームの値をパラメータとして渡すイベントがトリガーされます。

  1. コンポーネントを使用する

親コンポーネントで新しく作成した高度な検索コンポーネントを使用し、対応するパラメーターを渡します。次に例を示します。

<template>
  <div>
    <AdvancedSearch :fields="fields" v-model="searchParams" @submit="handleSubmit" />
  </div>
</template>

<script>
import AdvancedSearch from "./AdvancedSearch.vue";
export default {
  components: {
    AdvancedSearch,
  },
  data() {
    return {
      fields: [
        {
          name: "name",
          label: "姓名",
          type: "input",
        },
        {
          name: "age",
          label: "年龄",
          type: "input",
        },
        // 其他表单字段配置...
      ],
      searchParams: {},
    };
  },
  methods: {
    handleSubmit(params) {
      // 处理表单提交事件
    },
  },
};
</script>

親コンポーネントで詳細検索フォームのフィールド構成とフォーム値を定義し、 v-model フォーム値を双方向でバインドし、 @submit フォーム送信イベントをリッスンします。

上記は、Vue3 で単純な高度な検索コンポーネントを作成する基本的な手順です。実際の状況に応じてコードを調整および拡張できます。

おすすめ

転載: blog.csdn.net/weixin_42602736/article/details/130872658