1. 程式人生 > >React + TypeScript 預設 Props 的處理

React + TypeScript 預設 Props 的處理

React 中的預設 Props

通過元件的 defaultProps 屬性可為其 Props 指定預設值。

以下示例來自 React 官方文件 - Default Prop Values:

class Greeting extends React.Component {
  render() {
    return (
      <h1>Hello, {this.props.name}</h1>
    );
  }
}

// Specifies the default values for props:
Greeting.defaultProps = {
  name: 'Stranger'
};

// Renders "Hello, Stranger":
ReactDOM.render(
  <Greeting />,
  document.getElementById('example')
);

如果編譯過程使用了 Babel 的 transform-class-properties 外掛,還可以這麼寫:

class Greeting extends React.Component {
  static defaultProps = {
    name: 'stranger'
  }

  render() {
    return (
      <div>Hello, {this.props.name}</div>
    )
  }
}

加入 TypeScript

加入 TypeScript 後

interface Props {
  name?: string;
}

class Greeting extends React.Component<Props, {}> {
  static defaultProps = {
    name: "stranger",
  };

  render() {
    return <div>Hello, {this.props.name}</div>;
  }
}

此時不支援直接通過類訪問 defaultProps 來賦值以設定預設屬性,因為 React.Component 型別上並沒有該屬性。

//