Reactjs 如何';defaultProps';何时需要某些字段?
我想为可选道具设置Reactjs 如何';defaultProps';何时需要某些字段?,reactjs,typescript,Reactjs,Typescript,我想为可选道具设置defaultProps: interface IAppProps { requiredProp : string; //should always be passed into component optionalProp?: string; } export class App extends React.Component<IAppProps, {}>{ public static defaultProps: IAppProps = {
defaultProps
:
interface IAppProps {
requiredProp : string; //should always be passed into component
optionalProp?: string;
}
export class App extends React.Component<IAppProps, {}>{
public static defaultProps: IAppProps = {
optionalProp: 'set from defaultProps!'
};
public render(){
return <div>{this.props.requiredProp} - {this.props.optionalProp}</div>
}
}
ReactDOM.render(<App requiredProp="Hello world" />, document.getElementById('app'))
接口IAppProps{
requiredProp:string;//应始终传递到组件中
optionalProp?:字符串;
}
导出类应用程序扩展React.Component{
公共静态defaultProps:IAppProps={
optionalProp:“从默认道具设置!”
};
公共渲染(){
返回{this.props.requiredProp}-{this.props.optionalProp}
}
}
ReactDOM.render(,document.getElementById('app'))
但是,这会引发错误,因为当我创建defaultProps
时,它不包含requiredProp
:
类型“{optionalProp:string;}”不能分配给类型“IAppProps”。
类型“{optionalProp:string;}”中缺少属性“requiredProp”
这样做的标准方式是什么?我是否只是将
null
或未定义的
传递到所需的属性中?在这种情况下,我会像那样拆分它们
interface interface IAppOptionalProps {
optionalProp?: string;
}
interface IAppProps extends IAppOptionalProps {
requiredProp: string;
}
然后让您的defaultProps
类型为IAppOptionalProps
public static defaultProps: IAppOptionalProps = {
optionalProp: 'set from defaultProps!'
};
仔细想想,你的
defaultProps
不是IAppProps
,也不应该是这样的类型,而是上面定义的IAppOptionalProps
。不错!为什么我没有想到;)