Typescript Реакция: Нужно ли указывать аргументы для конструктора суперкласса. И что это за аргументы? - PullRequest
0 голосов
/ 11 февраля 2020

Привет, так что мне все не совсем понятно, я все еще не понимаю, какой именно аргумент c нужен моему конструктору. Если это очевидно для вас, не могли бы вы сказать, какими должны быть аргументы конструктора для super() и constructor()?

import * as React from "react";
import styles from "./ScriptEditor.module.scss";
import { IScriptEditorProps } from "./IScriptEditorProps";
import {
  Dialog,
  DialogType,
  DialogFooter
} from "office-ui-fabric-react/lib/Dialog";
import {
  DefaultButton,
  PrimaryButton
} from "office-ui-fabric-react/lib/Button";
import { TextField } from "office-ui-fabric-react/lib/TextField";
import { loadStyles } from "@microsoft/load-themed-styles";
require("./overrides.css");

export default class ScriptEditor extends React.Component<
  IScriptEditorProps,
  any
> {
  **constructor(IScriptEditorProps, any) {
    super(IScriptEditorProps, any);**

    this._showDialog = this._showDialog.bind(this);
    this._closeDialog = this._closeDialog.bind(this);
    this._cancelDialog = this._cancelDialog.bind(this);
    this._onScriptEditorTextChanged = this._onScriptEditorTextChanged.bind(
      this
    );

    const uiFabricCSS: string = `
    .pzl-bgColor-themeDark, .pzl-bgColor-themeDark--hover:hover {
      background-color: "[theme:themeDark, default:#005a9e]";
    }
    `;
    loadStyles(uiFabricCSS);
    this.state = {
      showDialog: false
    };
  }

  public componentDidMount(): void {
    this.setState({ script: this.props.script, loaded: this.props.script });
  }
  private _showDialog() {
    this.setState({ showDialog: true });
  }

  private _closeDialog() {
    this.setState({ showDialog: false });
    this.props.save(this.state.script);
  }

  private _cancelDialog() {
    this.props.save(this.state.loaded);
    this.setState({ showDialog: false, script: this.state.loaded });
  }

  private _onScriptEditorTextChanged(text: string) {
    this.setState({ script: text });
  }

  public render(): React.ReactElement<IScriptEditorProps> {
    const viewMode = (
      <span dangerouslySetInnerHTML={{ __html: this.state.script }}></span>
    );

. , .

Я пропустил return, потому что подумал, что это не будет иметь отношения к моему вопросу.

До сих пор я изменил несколько вещей назад и вперед, но я почти не понимаю конструктора и очень раздражен и какими параметрами хотят мои constructor и super() класс.

1 Ответ

2 голосов
/ 11 февраля 2020

Вам нужно передать props в конструктор класса реагирования следующим образом:

constructor(props) {
    super(props)
    ..............
}
...