React实战过程的知识了解
做项目用到react和antd,没办法循序渐进的学习,只能把一些点记录在这里,希望大家指正。
1.杂七杂八
正文
//actionRef,操作表单的预设方法,包括:刷新、重置所有项并刷新、重置到默认项、加载更多、清空选中项
const actionRef = useRef();
//刷新界面
actionRef?.current?.reload();
//重置表单数据
formRef?.current?.resetFields()
//富文本展示
<div dangerouslySetInnerHTML={{__html: contentInfo}}/>
1.ProTable Demo
这是antd提供的一种高级表格,如果我们的表格需要和后端交互,这是较好的一种选择。
1.1 request
表格主要是和后端交互,所以为这是protable里最重要的api。
request 会接收一个对象。对象中必须要有 data 和 success,如果需要手动分页 total 也是必需的。
<ProTable<DataType, Params>
// params 是需要自带的参数
// 这个参数优先级更高,会覆盖查询表单的参数
params={params}
request={async (
// 第一个参数 params 查询表单和 params 参数的结合
// 第一个参数中一定会有 pageSize 和 current ,这两个参数是 antd 的规范
params: T & {
pageSize: number;
current: number;
},
sort,
filter,
) => {
// 这里需要返回一个 Promise,在返回之前你可以进行数据转化
// 如果需要转化参数可以在这里进行修改
const msg = await myQuery({
page: params.current,
pageSize: params.pageSize,
});
return {
data: msg.result,
// success 请返回 true,
// 不然 table 会停止解析数据,即使有数据
success: boolean,
// 不传会使用 data 的长度,如果是分页一定要传
total: number,
};
}}
/>
1.2 columns
//引入方法
import { ProTable } from '@ant-design/pro-components';
//必传columns,protable会根据该字段渲染列
columns={[{
title: 'appid', dataIndex: 'appid', key: 'appid'
}, {
title: '公众号名称', dataIndex: 'name', key: 'name'
}, {
//默认每个字段都会被查询,增加search:false,或者hideInSearch:true,就会被隐藏
title: '类型', dataIndex: 'type', key: 'type', hideInSearch: true
}, {
title: '是否认证', dataIndex: 'verified', key: 'verified', hideInSearch: true
}, {
title: '操作', hideInSearch: true,
render: (_, row) => {
return <Space>
<WxAccountSave edit appid={row.appid}/>
<a onClick={() => handleDetail(row.appid)}
key="link1">接入信息</a>
<a onClick={() => handleDel(row.appid)} key="link2">删除</a>
</Space>
}
}
]}
查询其实主要还是跟后端互动,所以查询的list方法需要健壮些,可以带多个参数,比如我这边的写法是这样。
List<WxAccount> wxAccountList(Map<String, Object> req);
<select id="wxAccountList" resultType="com.demo.admin.server.wechat.entity.db.WxAccount">
select wxac.appid,
wxac.name,
wxac.type,
wxac.verified
from t_smart_wx_account wxac
left join t_smart_org tso on wxac.bind_org_code = tso.UUID
<where>
<if test="name!=null and name!=''">
and wxac.name like CONCAT('%',#{name},'%')
</if>
<if test="appid!=null and appid!=''">
and wxac.appid like CONCAT('%',#{appid},'%')
</if>
</where>
</select>
3.子标题
正文
在这里插入代码片
4.子标题
正文
在这里插入代码片
5.子标题
正文
在这里插入代码片