reactjs - 与 Typescript 反应 defaultProps 对象数组
问题描述
我正在尝试为对象道具数组的某些字段设置 defaultProps。
interface IProps {
steps: Array<{
id: number | string
route?: string
label?: string
completed?: boolean
disabled?: boolean
active?: boolean
}>
}
class Stepper extends React.Component<IProps, {}> {
static defaultProps: IProps = {
steps: ???
}
render() {
return <div></div>
}
}
我试图在网上查找,但找不到为我的案例设置 defaultProps 的方法。
我想只为 设置一些默认值completed
,disabled
并active
让另一个保持原样。
是否有捷径可寻 ?
解决方案
我将提取接口 IStep,并将其拆分为partial
一个complete
:
interface IPartialStep {
completed?: boolean
disabled?: boolean
active?: boolean
}
interface IStep extends IPartialStep {
id: number | string
route?: string
label?: string
};
所以,现在使用 2 个组件是合乎逻辑的:步骤列表 ( Stepper
) 和步骤项目 ( Step
):
interface IProps {
steps: Array<IStep>
}
class Stepper extends React.Component<IProps, {}> {
// actually, default props are moved to Step
// so this one probably not needed.
static defaultProps: IProps = {
steps: []
}
render() {
return this.props.steps.map(step => <Step {...step}/>);
}
}
class Step extends React.Component<IStep> {
static defaultProps: IPartialStep = {
// here you can define default props for step item
completed: false,
disabled: false,
active: false,
}
render() {
const {id, route, ...} = this.props;
// here you define how to display every step
return <div>{id}</div>
}
}
希望能帮助到你。
推荐阅读
- google-api - OAuth 2.0 客户端 ID 仅允许访问我的内部组织中的一组用户
- python - 有没有办法输出在 Python 中执行的当前行?
- python - Raspberry Pi 和 Windows 10 之间的蓝牙串行连接在片刻后超时
- powershell - 使用 Powershell 在 AD 中的特定组中查找特定用户
- ajax - 使用 Laravel 6 和 Fullcalendar 4 解析 JSON 错误失败
- c++ - 为什么 C++ 中的三角函数会跳过一些值?
- sql - SQL Server 需要找到提供最不同产品的供应商
- reactjs - 为空时隐藏 Html 标签
- selenium - AttributeError:模块“selenium.webdriver”没有属性“switch_to_alert”
- php - 如何在只读系统上运行 Symfony 应用程序,其中 'var/cache' 不能被写入?