antd - 如何使用 mobx 观察者与 antd 表列渲染功能
问题描述
使用观察者包装 antd 表列渲染函数时,出现渲染不是函数的错误。我试图避免每次都创建一个单独的观察者包装的功能组件,我从列渲染函数调用它。任何人都有运气或知道如何用观察者(或类似观察者的实现)直接包装列渲染函数?
这是打字稿代码:
import { observer } from "mobx-react-lite";
import { Button } from "antd";
import { ColumnsType } from "antd/lib/table";
import { TableDataSourceRecord } from "../models/TableDataSourceRecord";
const columns: ColumnsType<TableDataSourceRecord> = [
{
title: "View",
dataIndex: "url",
key: "url",
render: observer((url: any, _record: TableDataSourceRecord) => {
return (
<Button type="link" href={url.value}>
View
</Button>
);
}),
},
];
谢谢
解决方案
由于render
期望一个函数,你不能将 React.Component 传递给它,我猜(observer
创建组件)。
您是否尝试过<Observer>
包装组件?
import { Observer } from "mobx-react-lite";
import { Button } from "antd";
import { ColumnsType } from "antd/lib/table";
import { TableDataSourceRecord } from "../models/TableDataSourceRecord";
const columns: ColumnsType<TableDataSourceRecord> = [
{
title: "View",
dataIndex: "url",
key: "url",
render: (url: string, _record: TableDataSourceRecord) => {
return (
<Observer>
{() => (
<Button type="link" href={url}>
View
</Button>
)}
</Observer>
);
},
},
];
无论如何,Observer
在您的示例中没有任何意义,因为您在那里没有observable
值,url
只是字符串原语。
推荐阅读
- sqlite - SQLite 请求特定日期之间的日历事件
- xamarin - Xamarin Android DialogFragment 中的 OnTimedEvent() 如何 Dissmis()?
- hook - 在模式挂钩中向用户显示消息
- go - 构建约束排除所有 Go 文件 go build for amd64 系统
- python - 如何快速下载大量小文件?(不受带宽限制)
- javascript - 如何在打字稿中仅使用一种状态在 redux 存储中设置 preloadedState?
- objective-c - NSEventMaskCursorUpdate 与 addGlobalMonitorForEventsMatchingMask 未触发
- postgresql - 如何在 Supabase 中使用单个 API 调用插入多个表
- python - 如何在 Statsmodels 或 Linearmodels 中测试 2SLS 的系数相等性?
- scala - Docker 运行没有抛出这样的文件或目录:未知