Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何';defaultProps';何时需要某些字段?_Reactjs_Typescript - Fatal编程技术网

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

不错!为什么我没有想到;)