Вы можете сделать опцию variables
опциональной, например, присвоить ей значение по умолчанию.
const DynamicSelector = ({ query, variables = {}, ...staticSelectorProps }) => {
const { data, loading, error } = useQuery(query, { variables });
if (error) return null;
let list = [];
if (data) {
const key = Object.keys(data)[0];
list = get(data, key, []);
}
return (
<StaticSelector loading={loading} items={list} {...staticSelectorProps} />
);
};
export default DynamicSelector;
Поскольку Typescript
ожидает, что вы пропустите variables
проп, пропустите его или сделайте несколько по умолчанию или сделайте его необязательным, сделав интерфейс.
Как это
export interface DynamicSelectorProps {
query: any;
variables?: any;
}
const DynamicSelector: FC<DynamicSelectorProps> = ({ query, variables, ...staticSelectorProps }) => {
const { data, loading, error } = useQuery(query, { variables });
if (error) return null;
let list = [];
if (data) {
const key = Object.keys(data)[0];
list = get(data, key, []);
}
return (
<StaticSelector loading={loading} items={list} {...staticSelectorProps} />
);
};
export default DynamicSelector;
Редактировать
, передавая undefined
в качестве значения по умолчанию для реквизита лучше, так как он будет игнорироваться компонентом большую часть времени, что приведет к меньшему количеству ошибок, если таковые имеются.