Как вызвать функцию, написанную в сценарии html root из реагирующего компонента - PullRequest
1 голос
/ 21 апреля 2020

Как вызвать функцию, присутствующую в скрипте root html, из компонента реакции, который находится где-то в дочернем реактиве?

  • root. html

    <html>
       <head> 
        <script type="text/javascript">           
          function NotifyWebView()    
          {            
            window.external.notify('Text');    
          }             
      </script> 
    </head>
    <body>
    <div id='root'></div>
    </body>
    </html>  
    
  • index.tsx

    componentDidMount{
     //How to access and invoke NotifyWebView() ??
    }
    

Ответы [ 3 ]

3 голосов
/ 21 апреля 2020

Вы можете добавить функцию к объекту окна.

root. html

window.NotifyWebView = function () { 
 // ...your code
}

index.tsx

componentDidMount() {
 window.NotifyWebView && window.NotifyWebView();
}

Я вижу вас используют Typescript, и он будет жаловаться, что свойство "NotifyWebView" не существует в объекте окна. Тогда вам нужно объявить это. Добавьте это в конец файла index.tsx:

declare global {
 interface Window {
  NotifyWebView?(): void // Make it optional
 }
}
0 голосов
/ 21 апреля 2020

Вы можете создать функцию в отдельном файле и импортировать эту функцию в компонент реагирования, затем вызвать функцию в компоненте, скажем, по нажатию кнопки или, если есть вложенный компонент, то можно передать его в качестве пропеллера.

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

Объявите функцию в дочернем компоненте, как показано ниже

declare function NotifyWebView();

Затем вызовите функцию из любого метода дочернего компонента

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