Я использую 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 не помогает (удивление, удивление).
Спасибо!