在 TSX 组件中使用 JSX 组件无法在不抛出错误的情况下进行编译
Using a JSX Component inside a TSX Component cannot compile without throwing an error
所以我有一个名为 ContractExpenses
的 typescript-react 组件,我在其中使用了一个名为 DynamicSelector 的 JSX 组件,但是我收到如下错误
这是我的 <DynamicSelector/>
组件的代码
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;
有什么办法可以避免此类错误,使用打字稿让我很难受,因为我必须将所有子项(及其子项!)转换为打字稿
你可以让你的 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
Prop ,要么传递它,要么将其设置为默认值,要么通过制作接口使其成为可选的。
像这样
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
作为 props 的默认值会更好,因为大多数时候它会被组件忽略,从而减少错误(如果有的话)。
所以我有一个名为 ContractExpenses
的 typescript-react 组件,我在其中使用了一个名为 DynamicSelector 的 JSX 组件,但是我收到如下错误
这是我的 <DynamicSelector/>
组件的代码
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;
有什么办法可以避免此类错误,使用打字稿让我很难受,因为我必须将所有子项(及其子项!)转换为打字稿
你可以让你的 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
Prop ,要么传递它,要么将其设置为默认值,要么通过制作接口使其成为可选的。
像这样
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
作为 props 的默认值会更好,因为大多数时候它会被组件忽略,从而减少错误(如果有的话)。