跳到主要内容
Swizzle Ready

Text

This field lets you show basic text. It uses Ant Design's <Typography.Text> component.

Swizzle

You can swizzle this component to customize it with the refine CLI

Usage

Let's see how to use it in a basic list page:

src/pages/posts/list.tsx
import { IResourceComponentsProps, useMany } from "@pankod/refine-core";
import {
List,
TextField,
Table,
useTable,
} from "@pankod/refine-antd";

export const PostList: React.FC<IResourceComponentsProps> = (props) => {
const { tableProps } = useTable<IPost>();

const categoryIds =
tableProps?.dataSource?.map((item) => item.category.id) ?? [];

const { data: categoriesData, isLoading } = useMany<ICategory>({
resource: "categories",
ids: categoryIds,
queryOptions: {
enabled: categoryIds.length > 0,
},
});

return (
<List {...props}>
<Table {...tableProps} rowKey="id">
<Table.Column dataIndex="title" title="title" />
<Table.Column
dataIndex={["category", "id"]}
title="category"
render={(value: number) => {
if (isLoading) {
return <TextField value="Loading..." />;
}

return (
<TextField strong
value={
categoriesData?.data.find(
(item) => item.id === value,
)?.title
}
/>
);
}}
/>
</Table>
</List>
);
};

interface ICategory {
id: number;
title: string;
}

interface IPost {
id: number;
category: { id: number };
}
提示

Table columns already render their data as text by default. If the rendered data is in text form and its text field won't be customized with any of Ant Design <Typography.Text> properties, there isn't any need to use <TextField> in a column's render function.

API Reference

Properties

External Props

It also accepts all props of Ant Design Text.