vue3 + element Plus实现select远程搜索

  1. 引入element中的select选择器

<el-select
    v-model="params.q"
    filterable
    remote
    :reserve-keyword="false"
    placeholder="请输入关键字"
    clearable
    :remote-method="remoteMethod"
    :loading="loading"
    style="width: 240px"
      >
      <el-option
         v-for="item in options"
         :key="item.value"
         :label="item.label"
         :value="item.value"
       />
</el-select>
  1. 在js中设置通过输入关键字以从远程服务器中查找数据

const options = ref<ListItem[]>([]);  //select下拉数据
const loading = ref(false);    //获取数据时加载状态
let selectData = [];         //存储接口获取的数据

//这里是请求所需的参数
const variables = ref({
  first: 0,
  pageSize: 1000,
  q: "",
});

//remote-method为一个Function,它会在输入值发生变化时调用,参数为当前输入值
const remoteMethod = (query: string) => {
  if (query) {
    loading.value = true;
    variables.value.q = query;
    //我这里使用了graphql请求,只需要将请求获取的数据赋值给selectData
    const { refetch, onResult } = useQuery(queryProjectImage, variables, {
      fetchPolicy: "no-cache",
    });
    onResult((res) => {
      loading.value = false;
      selectData = res.data?.QueryProjectImage.data;
      //这里将数据重组
      options.value = selectData.map((item) => ({
        value: `${item.mpImage.id}`,
        label: `${item.filename}`,
      }));
    });
  } else {
    options.value = [];
  }
};

//这里是需要传给父组件的数据来进行搜素
const params: SampleSearch = reactive({
  q: "",
  date: undefined,
  setType: undefined,
  status: undefined,
});

const emit = defineEmits(["onQuery"]);

const onSubmit = () => {
  emit("onQuery", params);
  console.log(params);
};

defineExpose({ onSubmit });

  1. 功能实现如下:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3 是一个流行的 JavaScript 框架,用于构建用户界面。Element Plus 是一个基于 Vue 3 的组件库,提供了一套美观易用的 UI 组件。 要实战 Vue 3 和 Element Plus,首先你需要安装 Vue CLI 4 或更高版本。然后,你可以创建一个新的 Vue 3 项目并添加 Element Plus: 1. 安装 Vue CLI:运行以下命令安装 Vue CLI。 ``` npm install -g @vue/cli ``` 2. 创建新项目:在命令行中运行以下命令来创建一个新的 Vue 3 项目。 ``` vue create my-project ``` 然后选择 "Manually select features",并确保选择了 "Babel" 和 "Router"。 3. 安装 Element Plus:进入项目目录,并运行以下命令来安装 Element Plus。 ``` cd my-project npm install element-plus ``` 4. 引入 Element Plus:在项目的入口文件(通常是 src/main.js)中,添加以下代码来引入 Element Plus。 ```javascript import { createApp } from 'vue' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' createApp(App).use(ElementPlus).mount('#app') ``` 5. 使用 Element Plus 组件:现在你可以在你的 Vue 组件中使用 Element Plus 的组件了。例如,在一个组件中使用一个按钮组件的示例: ```vue <template> <el-button>Click me!</el-button> </template> <script> import { ElButton } from 'element-plus' export default { components: { ElButton } } </script> ``` 以上是使用 Vue 3 和 Element Plus 进行实战的基本步骤。你可以根据需要使用 Element Plus 的各种组件和功能来开发你的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值