开发指南
用法
import { useState } from 'react';
import { QueryControls } from '@wordpress/components';
const QUERY_DEFAULTS = {
category: 1,
categories: [
{
id: 1,
name: 'Category 1',
parent: 0,
},
{
id: 2,
name: 'Category 1b',
parent: 1,
},
{
id: 3,
name: 'Category 2',
parent: 0,
},
],
maxItems: 20,
minItems: 1,
numberOfItems: 10,
order: 'asc',
orderBy: 'title',
};
const MyQueryControls = () => {
const [ query, setQuery ] = useState( QUERY_DEFAULTS );
const { category, categories, maxItems, minItems, numberOfItems, order, orderBy } = query;
const updateQuery = ( newQuery ) => {
setQuery( { ...query, ...newQuery } );
};
return (
<QueryControls
{ ...{ maxItems, minItems, numberOfItems, order, orderBy } }
onOrderByChange={ ( newOrderBy ) => updateQuery( { orderBy: newOrderBy } ) }
onOrderChange={ ( newOrder ) => updateQuery( { order: newOrder } ) }
categoriesList={ categories }
selectedCategoryId={ category }
onCategoryChange={ ( newCategory ) => updateQuery( { category: newCategory } ) }
onNumberOfItemsChange={ ( newNumberOfItems ) =>
updateQuery( { numberOfItems: newNumberOfItems } )
}
/>
);
};
多分类选择器
QueryControls 组件现在支持多选分类,以替代目前可用的单选分类功能。要启用此功能,请使用带有新属性的组件:使用 categorySuggestions 代替 categoriesList,并使用 selectedCategories 数组代替 selectedCategoryId,如下所示:
const QUERY_DEFAULTS = {
orderBy: 'title',
order: 'asc',
selectedCategories: [
{
id: 1,
value: 'Category 1',
parent: 0,
},
{
id: 2,
value: 'Category 1b',
parent: 1,
},
],
categories: {
'Category 1': {
id: 1,
name: 'Category 1',
parent: 0,
},
'Category 1b': {
id: 2,
name: 'Category 1b',
parent: 1,
},
'Category 2': {
id: 3,
name: 'Category 2',
parent: 0,
},
},
numberOfItems: 10,
};
const MyQueryControls = () => {
const [ query, setQuery ] = useState( QUERY_DEFAULTS );
const { orderBy, order, selectedCategories, categories, numberOfItems } = query;
const updateQuery = ( newQuery ) => {
setQuery( { ...query, ...newQuery } );
};
return (
<QueryControls
{ ...{ orderBy, order, numberOfItems } }
onOrderByChange={ ( newOrderBy ) => updateQuery( { orderBy: newOrderBy } ) }
onOrderChange={ ( newOrder ) => updateQuery( { order: newOrder } ) }
categorySuggestions={ categories }
selectedCategories={ selectedCategories }
onCategoryChange={ ( category ) => updateQuery( { selectedCategories: category } ) }
onNumberOfItemsChange={ ( newNumberOfItems ) =>
updateQuery( { numberOfItems: newNumberOfItems } )
}
/>
);
};
分类列表的格式也需要更新,以匹配类别建议所需的类型。
属性
authorList: Author[]
可供选择的作者数组。
- 是否必需:否
- 平台:Web
categoriesList: Category[]
分类数组。当与 onCategoryChange 属性一起传递时,它会导致组件渲染允许一次选择一个分类的用户界面。
- 是否必需:否
- 平台:Web
categorySuggestions: Record< Category[ ‘name’ ], Category >
一个以分类名称为键的分类对象。当与 onCategoryChange 属性一起传递时,它会导致组件渲染启用多选的用户界面。
- 是否必需:否
- 平台:Web
maxItems: number
最大项目数量。
- 是否必需:否
- 默认值:100
- 平台:Web
minItems: number
最小项目数量。
- 是否必需:否
- 默认值:1
- 平台:Web
numberOfItems: number
通过查询检索的选定项目数量。
- 是否必需:否
- 平台:Web
onAuthorChange: ( newAuthor: string ) => void
接收新作者值的函数。如果未指定,则不渲染作者控件。
- 是否必需:否
- 平台:Web
onCategoryChange: ( newCategory: string ) => void | FormTokenFieldProps[ ‘onChange’ ]
接收新分类值的函数。如果未指定,则不渲染分类控件。
函数的签名取决于是否启用了多选分类功能。
- 是否必需:否
- 平台:Web
onNumberOfItemsChange: ( newNumber?: number ) => void
接收新项目数量的函数。如果未指定,则不渲染项目数量范围控件。
- 是否必需:否
- 平台:Web
onOrderChange: ( newOrder: ‘asc’ | ‘desc’ ) => void
接收新排序值的函数。如果未指定此属性或 onOrderByChange 属性,则不渲染排序控件。
- 是否必需:否
- 平台:Web
onOrderByChange: ( newOrderBy: ‘date’ | ‘title’ ) => void
接收新 orderby 值的函数。如果未指定此属性或 onOrderChange 属性,则不渲染排序控件。
- 是否必需:否
- 平台:Web
order: ‘asc’ | ‘desc’
检索文章的顺序。
- 是否必需:否
- 平台:Web
orderBy: ‘date’ | ‘title’ | ‘menu_order’
用于对文章进行排序的元数据键。
- 是否必需:否
- 平台:Web
orderByOptions: OrderByOption[]
用于对文章进行排序的元数据键。
- 是否必需:否
- 平台:Web
selectedAuthorId: number
选定的作者 ID。
- 是否必需:否
- 平台:Web
selectedCategories: Category[]
categorySuggestions 属性所选的分类。
- 是否必需:否
- 平台:Web
selectedCategoryId: number
categoriesList 属性所选的分类。
- 是否必需:否
- 平台:Web