TypeScript 中 React StatelessComponent 的 DefaultProps
DefaultProps for React StatelessComponent in TypeScript
我想在带有 defaultProps 的打字稿中使用 React 无状态组件。
我无法找到如何使用允许我在 TypeScript 项目中使用 defaultProps 而不使用菱形语法的类型的解决方案。
import {Link} from "react-router";
interface LinkProps {
...
}
const LinkPresenter = (props: LinkProps): JSX.Element =>
<Link
...
>
...
</Link>;
LinkPresenter.defaultProps = { // !!! unresolved variable defaultProps
...
};
键入 React.SFC 允许附加 defaultProps 以响应无状态组件。
您可以在下面找到 React.SFC 和 defaultProps.
的简化示例
import {Link} from "react-router";
interface LinkProps {
to?: HistoryModule.LocationDescriptorObject;
onClick?: (event: React.FormEvent) => void;
children?: React.ReactNode;
}
const LinkPresenter: React.SFC = (props: LinkProps): JSX.Element =>
<Link
className="link"
to={props.to}
onClick={props.onClick}
>
{props.children}
</Link>;
// Alternative syntax
const LinkPresenter: React.StatelessComponent = (props: LinkProps): JSX.Element =>
...
LinkPresenter.defaultProps = { // now we can use defaultProps
to: {
pathname: `/homepage`,
query: {
default: 'someDefault'
}
},
onClick: () => {},
children: <span>Hello world</span>,
};
只是为了扩展我们的对话,这是使用 TS / ES6 默认 属性 方法的替代方法:
import {Link} from "react-router";
interface LinkProps {
to?: HistoryModule.LocationDescriptorObject;
onClick?: (event: React.FormEvent) => void;
children?: React.ReactNode;
}
let defaultProps : LinkProps = {
to: {
pathname: `/homepage`,
query: {
default: 'someDefault'
}
},
onClick: () => {},
children: <span>Hello world</span>
}
const LinkPresenter = (props: LinkProps = defaultProps): JSX.Element =>
<Link
className="link"
to={props.to}
onClick={props.onClick}
>
{props.children}
</Link>;
我想在带有 defaultProps 的打字稿中使用 React 无状态组件。
我无法找到如何使用允许我在 TypeScript 项目中使用 defaultProps 而不使用菱形语法的类型的解决方案。
import {Link} from "react-router";
interface LinkProps {
...
}
const LinkPresenter = (props: LinkProps): JSX.Element =>
<Link
...
>
...
</Link>;
LinkPresenter.defaultProps = { // !!! unresolved variable defaultProps
...
};
键入 React.SFC 允许附加 defaultProps 以响应无状态组件。
您可以在下面找到 React.SFC 和 defaultProps.
的简化示例import {Link} from "react-router";
interface LinkProps {
to?: HistoryModule.LocationDescriptorObject;
onClick?: (event: React.FormEvent) => void;
children?: React.ReactNode;
}
const LinkPresenter: React.SFC = (props: LinkProps): JSX.Element =>
<Link
className="link"
to={props.to}
onClick={props.onClick}
>
{props.children}
</Link>;
// Alternative syntax
const LinkPresenter: React.StatelessComponent = (props: LinkProps): JSX.Element =>
...
LinkPresenter.defaultProps = { // now we can use defaultProps
to: {
pathname: `/homepage`,
query: {
default: 'someDefault'
}
},
onClick: () => {},
children: <span>Hello world</span>,
};
只是为了扩展我们的对话,这是使用 TS / ES6 默认 属性 方法的替代方法:
import {Link} from "react-router";
interface LinkProps {
to?: HistoryModule.LocationDescriptorObject;
onClick?: (event: React.FormEvent) => void;
children?: React.ReactNode;
}
let defaultProps : LinkProps = {
to: {
pathname: `/homepage`,
query: {
default: 'someDefault'
}
},
onClick: () => {},
children: <span>Hello world</span>
}
const LinkPresenter = (props: LinkProps = defaultProps): JSX.Element =>
<Link
className="link"
to={props.to}
onClick={props.onClick}
>
{props.children}
</Link>;