import React, { FC, useEffect, useState } from 'react';
import api_tool from 'service/tool';
import { Card, Table } from 'antd';
import { ColumnsType } from 'antd/es/table';
interface WhoisProps {
keyword: string;
callback?: () => void
}
interface WhoisItem {
domain: string;
registration_date: string;
registration_status: string;
registrant_country: string;
registrant_organization: string;
registrant_email: string;
registrant_name: string;
registrant_telephone: string;
sponsoring: string;
update_date: string;
expiry_date: string;
name_servers: string;
}
const Dsn: FC<WhoisProps> = ({ keyword, callback }) => {
const [displayData, setDisplayData] = useState(undefined);
const [searchWord, setSearchWord] = useState<string>('');
const loadData = async () => {
if (!keyword) {
return;
}
setSearchWord(keyword);
try {
const { data } = await api_tool.toolWhois(keyword);
setDisplayData(data);
callback && callback();
} catch (error) {
setDisplayData([])
setSearchWord('')
callback && callback();
}
};
const columns: ColumnsType<WhoisItem> = [
{
title: '序号',
render: (text: string, record: WhoisItem,index: number) => index + 1
},
{
title: '注册人',
dataIndex: 'registrant_organization'
},
{
title: '注册邮箱',
width: 100,
dataIndex: 'registrant_email'
},
{
title: '联系电话',
width: 100,
dataIndex: 'registrant_telephone'
},
{
title: '注册时间',
dataIndex: '',
render: (text: string, record: WhoisItem, index: number) => {
return record.registration_date;
}
},
{
title: '过期时间',
dataIndex: '',
render: (text: string, record: WhoisItem, index: number) => {
return record.expiry_date;
}
},
{
title: '域名服务器',
width: 100,
dataIndex: '',
render: (text: string, record: WhoisItem, index: number) => {
return record.name_servers;
}
},
{
title: '托管商',
dataIndex: 'sponsoring'
}
];
useEffect(() => {
loadData();
}, [keyword]);
return (
<div>
{displayData && searchWord && (
<Card title={`${searchWord}域名查询Whois结果`}>
<Table
pagination={false}
scroll={{ x: 'max-content' }}
columns={columns}
rowKey={() => Math.random()}
dataSource={displayData || []}
></Table>
</Card>
)}
</div>
);
};
export default Dsn;
请问下在reactHooks下我这么写一个组件,需要依赖keyword的变更去请求数据。
现在控制台一直报警告如下。
Line 99:8: React Hook useEffect has a missing dependency: 'loadData'. Either include it or remove the dependency array
有没有好的处理方案,如果是建议我关闭eslint的校验就算了。
可以修改成下面这样