首页 > 其他分享 >react-query-builder查询构建器中文文档

react-query-builder查询构建器中文文档

时间:2023-05-19 11:57:19浏览次数:42  
标签:运算符 自定义 builder 查询 react query

简介

react-query-builder是一个React组件库,用于构建可配置的查询构建器。

使用react-query-builder,您可以轻松地构建复杂的查询表单,使用户能够以直观的方式构建和执行查询。

以下是一些常见的用例:

  • 构建高级搜索表单,允许用户根据不同的条件搜索数据。
  • 在数据可视化应用程序中使用,以允许用户筛选和过滤数据。
  • 作为电子商务应用程序中的筛选器,允许用户根据价格范围、品牌、颜色等条件筛选商品。

react-query-builder的主要特点包括:

  • 可配置性:react-query-builder允许您自定义每个查询条件的行为、外观和验证逻辑。
  • 易于使用:react-query-builder提供了一个简单的API,使您能够轻松地构建和管理查询构建器。
  • 可扩展性:react-query-builder是一个可扩展的库,允许您自定义和扩展其功能。

安装

您可以使用npm或yarn安装react-query-builder:

npm install react-query-builder

或者

yarn add react-query-builder

示例

下面是一个简单的示例,演示如何使用react-query-builder构建一个简单的查询表单:

import React from 'react';

import QueryBuilder from 'react-query-builder';

const fields = [

 { name: 'firstName', label: 'First Name', type: 'string' },

 { name: 'lastName', label: 'Last Name', type: 'string' },

 { name: 'age', label: 'Age', type: 'number' },

 { name: 'gender', label: 'Gender', type: 'select', options: ['Male', 'Female'] },

];

 const operators = [

 { name: '=', label: '=' },

 { name: '!=', label: '!=' },

 { name: '<', label: '<' },

 { name: '>', label: '>' },

];

const QueryBuilderExample = () => {

 const [query, setQuery] = React.useState(null);

 const onQueryChange = (query) => {

  setQuery(query);

 };

 return (

  <QueryBuilder

   fields={fields}

   operators={operators}

   onQueryChange={onQueryChange}

  />

 );

}; 

export default QueryBuilderExample;

在这个示例中,我们定义了四个字段:firstName、lastName、age和gender。每个字段都有一个名称、一个标签和一个类型。我们还定义了四个运算符:=、!=、<和>。

基本用法

QueryBuilder组件接受三个必需的属性:fields、operators和onQueryChange。

  • fields:一个数组,包含所有可用的字段。每个字段应该有一个名称、一个标签和一个类型。
  • operators:一个数组,包含所有可用的运算符。
  • onQueryChange:一个回调函数,每当查询发生变化时都会被调用。这个函数应该接受一个查询对象作为参数。

在上面这个示例中,我们将onQueryChange函数定义为一个状态更新函数,以便我们能够在组件中跟踪查询状态。在实际应用程序中,您可能会将查询对象传递给API调用或其他组件等。

扩展用法

react-query-builder提供了许多选项和属性,以便您自定义和扩展其功能

属性
以下是QueryBuilder组件的可用属性:
  • fields:一个包含所有可用字段的数组。每个字段应该是一个对象,包含以下属性:

    • name(必需):字段名称,用于标识该字段。
    • label(必需):字段标签,用于显示给用户。
    • type(必需):字段类型。可以是文本(text)、数字(number)、日期(date)、时间(time)、日期时间(datetime)、下拉选项(select)等。支持的类型包括:stringnumberdatetimedatetimeselect
    • options(可选):如果字段类型为select,则提供可用选项的数组。如果字段类型为下拉选项,则可以提供选项列表。这应该是一个字符串数组或对象数组,每个对象包含value和label属性。
    • operators:字段支持的运算符数组。如果省略,则使用默认运算符。
    • defaultValue:字段的默认值。
    • valueSources:字段支持的值来源。默认为['value'],即手动输入值。
    • fieldSettings:一个对象,包含用于自定义字段行为和外观的属性。有关更多信息,请参见下面的“自定义字段行为和外观”部分。
  • operators:一个包含所有可用运算符的数组。每个运算符应该是一个对象,包含以下属性:

    • name(必需):运算符名称;操作符名称,用于标识该操作符。

    • label(必需):运算符标签。操作符标签,用于显示给用户。

    • valueTypes(必需):操作符可以接受的值类型,应该是一个字符串数组,包含text、number、date、time、datetime和select。

    • defaultValue:运算符的默认值。

    • textSeparators:如果运算符需要两个文本输入值,则

以下是可用的组合器:
  • combinators:一个包含所有可用组合器的数组。每个组合器应该是一个对象,包含以下属性:
    • name(必需):组合器名称,用于标识该组合器。
    • label(必需):组合器标签,用于显示给用户。
    • clause(必需):组合器可以包含的子句数量,可以是single(单个子句)multiple(多个子句)
其他属性:
  • onQueryChange:当查询更改时调用的回调函数。它接收当前查询作为参数。

  • controlElements:一个对象,用于定义自定义控件元素。键应该是控件名称,值应该是一个包含以下属性的对象:

    • type(必需):控件类型,可以是text、number、date、time、datetime和select。

    • props(可选):控件属性,可以是任何传递给控件的属性,比如options(如果控件类型为下拉选项)。

    • allowEmpty:是否允许空查询,默认为false。

    • showCombinatorsBetweenRows:是否在行之间显示组合器,默认为false。

    • showNotToggle:是否显示否定切换按钮,默认为false。

    • enableDragAndDrop:是否启用拖放支持,默认为false。

    • enableCollapse:是否启用折叠支持,默认为false。

    • enableInvert:是否启用反转支持,默认为false。

    • enableDelete:是否启用删除支持,默认为false。

QueryBuilder组件具有许多可用的属性,以便您可以自定义和控制查询构建器的行为和外观。以下是QueryBuilder组件的可用属性:

  • fields:一个数组,包含所有可用的字段。每个字段应该有一个名称、一个标签和一个类型。默认值为[]。
  • operators:一个数组,包含所有可用的运算符。默认值为[]。
  • combinators:一个数组,包含所有可用的组合器。默认值为[]。
  • controlClassnames:一个对象,用于自定义控件的类名。可以使用这个属性来自定义控件的样式。默认值为{}。
  • translations:一个对象,用于自定义组件的翻译。可以使用这个属性来自定义组件的语言。默认值为{}。
  • getOperators:一个函数,用于获取特定字段的可用运算符。默认值为一个返回所有运算符的函数。
  • getCombinaors:一个函数,用于获取特定条件的可用组合器。默认值为一个返回所有组合器的函数。
  • onQueryChange:一个回调函数,每当查询发生变化时都会被调用。这个函数应该接受一个查询对象作为参数。默认值为一个空函数。
  • controlElements:一个对象,用于自定义每个控件的外观和行为。默认值为一个包含所有默认控件元素的对象。
  • enableMountQueryChange:一个布尔值,控制是否在组件挂载时调用onQueryChange函数。默认值为false。

上述属性中,fieldsoperatorscombinators是QueryBuilder组件最基本的属性。它们定义了查询构建器中所有可用的字段、运算符和组合器。

controlClassnamestranslations允许您自定义查询构建器中每个控件的样式和语言。

getOperatorsgetCombinators允许您自定义每个字段和条件的可用运算符和组合器。

onQueryChange是一个回调函数,每当查询发生变化时都会被调用。您可以使用这个函数来处理查询结果,例如将查询结果传递给API调用或其他组件。

controlElements允许您自定义每个控件的外观和行为。

enableMountQueryChange允许您在组件挂载时调用onQueryChange函数。默认情况下,只有在用户交互后才会调用onQueryChange函数。

这些属性使QueryBuilder组件非常灵活和可配置,允许您自定义和控制查询构建器的每个方面。

标签:运算符,自定义,builder,查询,react,query
From: https://www.cnblogs.com/niyan/p/17414642.html

相关文章

  • APP中RN页面热更新流程-ReactNative源码分析
    平时使用WebStorm或VSCode对RN工程中的文件修改后,在键盘上按一下快捷cmd+s进行文件保存,此时当前调试的RN页面就会自动进行刷新,这是RN开发相比于原生开发一个很大的优点:热更新。那么,从按一下快捷cmd+s到RN页面展示出最新的JS页面,这个过程是怎样发生的呢?下面根据时间顺序来梳理一下......
  • quasar [email protected] ssr Meta插件 使用 title无法reactive的bug
    为了使自己的网站SEO更友好,在项目里启用了quasar的Meta插件。但实际使用下来发现文档里的描述不正确。为了动态的更新title和meta信息,文档https://quasar.dev/quasar-plugins/meta里介绍ReactiveInthesectionabove,younoticedallofthemetapropsare“static”.But......
  • jQuery
    text/javascripttext/cssytext/htmlmime格式:大类型/小类型 jQuery是一个库,使用前应该先引入.引入jQuery字库的,也就是引入jQuery文件<scriptsrc="lib/jquery-3.4.1.min.js"type="text/javascript"charset="utf-8"></script>JQuery下载地址:http://w......
  • Html中使用jquery通过Ajax请求WebService接口以及跨域问题解决
    场景VS2019新建WebService/Web服务/asmx并通过IIS实现发布和调用:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130743584在上面实现发布WebService的基础上,怎样在html中通过jquery对接口发起请求和解析数据。注:博客:https://blog.csdn.net/badao_liumang_qiz......
  • MybatisPlus中LamdaQueryWrapper 与 QueryWrapper的使用及区别
    一、QueryWrapper的使用;比如有一张表trolley_itme,需要通过device_id查询出符合条件的所有数据(返回List集合);1、QueryWrapper的最基础的使用方式是这样的:必须写清楚具体的字段名称(即有硬编码的嫌疑)//查询条件的构造器:QueryWrapper<TrolleyItme>queryWrapper=new QueryWra......
  • 一张图解析FastAdmin中的FormBuilder表单生成器
     功能描述在使用FastAdmin一键生成CRUD后,默认的生成的都是原生HTML的组件代码,会有许多不熟悉前端的小伙伴改动起来会比较费劲。其实在FastAdmin中有一个简单的FormBuilder,但是它只能生成一些简单的文本框或下拉框,像FastAdmin中常用的动态下拉框、城市选择框、联动框,它就没法实......
  • builder模式
     1#include<iostream>2#include<string>3#include<vector>4#include<sstream>5usingnamespacestd;67template<classT>8stringConvertToString(Tvalue){9stringstreamss;10ss<......
  • PHP+MySql+jQuery实现的“顶”和“踩”投票功能
    当我们浏览网页时,我们想对网页内容如文章、评论中的观点持赞同或反对意见时,可以通过点击网页中的“顶”和“踩”来进行投票。而整个交互过程,开发者可以通过ajax异步来实现,从而提高用户体验。 本文结合实例,讲解使用PHP+MySql+jQuery实现的“顶”和“踩”投票功能,通过记录用户IP,判断......
  • React.FC中父组件调用子组件方法
    https://blog.csdn.net/qq_36990322/article/details/1098588901.函数式和hooks写法其实下面的缺点基本不算缺点了,因为函数式写法,下面算是简单的了。使用forwardRef只会让你的组件定义的更复杂优点:1、写法简单易懂2、假如子组件嵌套了HOC,也可以指向真实子组件缺点:1、需要自定......
  • 部署带路由的React SPA 项目
    使用Nginx将/phone/*请求反向代理为/*启动项目serve-s./build-l3000项目内路由仍然是/phone/xxx不用改动,但需要在package.json中,指定静态资源根目录{..."homepage":"/phone/",...}......