Typescript / React - утилита веб-компонента для Chrome iOS - PullRequest
0 голосов
/ 30 декабря 2018

Я использую Google Cast SDK для Chrome и в соответствии с их инструкциями по использованию веб-компонента <google-cast-launcher>, но там написано:

Предупреждение: Chrome на iOSне поддерживает веб-компоненты с обратными вызовами жизненного цикла, которые автоматически распределяют ресурсы и прослушиватели событий.Разработчики должны вызывать метод dispose () после удаления модуля запуска приведения из DOM.

button.remove();
button.dispose();

Однако, когда я пытаюсь использовать dispose() в веб-компоненте, Typescrpt дает мнеошибка времени:

Свойство 'dispose' не существует для типа 'HTMLElement'.

Метод remove() работает, конечно, (поскольку он присутствует в подсказке типа), но, как и ожидалось, вызов dispose() выдает ошибку, когда компонент отключается:

Uncaught TypeError: this._ref.current.dispose не является функцией в GoogleCastButton.componentWillUnmount

Вот весь компонент React для кнопки запуска приведения.

import * as React from 'react'

declare global {
  namespace JSX {
    interface IntrinsicElements {
      'google-cast-launcher': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>
    }
  }
}

export default class GoogleCastButton extends React.Component<{}> {

  private _ref: React.RefObject<HTMLElement>

  constructor(props) {
    super(props)
    this._ref = React.createRef()
  }

  componentWillUnmount() {
    this._ref.current.remove()
    this._ref.current.dispose() // <-- error throws here
  }

  render() {
    const props = {
      ref: this._ref,
      style: {
        '--disconnected-color': '#FFF',
        '--connected-color': '#FFAF3B'
      }
    }
    return (
      //@ts-ignore
      <google-cast-launcher {...props} />
    )
  }
}

Кто-нибудь знает, как правильно вызвать этот загадочный dispose() метод?Документация Google не помогает (удивление, удивление).

Спасибо!

...