Функция Реквизит с функциональным компонентом - это не функция (React + Typescript) - PullRequest
1 голос
/ 30 апреля 2020

У меня есть функциональный компонент с функцией prop, которая не работает. Итак ...

export interface IPanelProps {
  itemID; number;
  Open: boolean;
  onClose: () => void;
}


const FabricPanel: FC<IPanelProps> = ({ onClose, Open, itemID }) => {
  let _OnCancelClick = () => {
    onClose();
  }

  return (
    <Panel isOpen={Open}>
      <h2>{itemID} </h2>
      <DialogFooter>
        <DefaultButton text="Cancel" onClick={_OnCancelClick} />
        <PrimaryButton text="Save" />
      </DialogFooter>
    </Panel>
  )
}

Получение ошибки: Uncaught TypeError: onClose не является функцией Open и реквизиты Item ID работают просто отлично, это потому, что я вызываю функцию prop? Я попытался поставить (реквизит) вместо этого, и это не сработало.

Есть идеи вообще?

На родительском компоненте:

   _renderPanelComponent = (props: any) => {
    const element : React.ReactElement<IPanelProps> = React.createElement(FabricPanel, assign({
      itemID : null,
      Open : false,
      OnClose : null


    }, props))
    ReactDom.render(element, this.panelPlaceHolder);
  }

  _showPanel = (itemID : number) => {
    this._renderPanelComponent({
      itemID,
      Open : true,
      OnClose : this._dismissPanel


    })
  }

  _dismissPanel = () =>{        
    this._renderPanelComponent({ isOpen: false });   
 }

При нажатии кнопки в SharePoint выполняется функция стрелки Showpanel, и это прекрасно работает. но onClose не работает.

1 Ответ

0 голосов
/ 30 апреля 2020

OnClose пишется по-разному между функциональным компонентом и родительским компонентом. Так что оба написаны на Close - отсортировано!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...