@@ -13,48 +13,48 @@ import { sleep } from '../../util';
13
13
function WebView ( { tabId, onIpcMessage } , ref ) {
14
14
const { defaultURL, updateTab } = useWebView ( { tabId } ) ;
15
15
const [ isDomReady , setDomReady ] = useState ( false ) ;
16
- const [ webview , setWebview ] = useState ( ) ;
16
+ const webviewRef = useRef ( null ) ;
17
17
18
18
useImperativeHandle (
19
19
ref ,
20
20
( ) => ( {
21
21
loadURL : async ( url , options ) => {
22
22
try {
23
- return await webview ?. loadURL ( url , options ) ;
23
+ return await webviewRef . current ?. loadURL ( url , options ) ;
24
24
} catch ( e ) {
25
25
console . info ( e ) ;
26
26
}
27
27
} ,
28
28
goBack : ( ) => {
29
- return webview ?. goBack ( ) ;
29
+ return webviewRef . current ?. goBack ( ) ;
30
30
} ,
31
31
goForward : ( ) => {
32
- return webview ?. goForward ( ) ;
32
+ return webviewRef . current ?. goForward ( ) ;
33
33
} ,
34
34
reload : ( ) => {
35
- return webview ?. reload ( ) ;
35
+ return webviewRef . current ?. reload ( ) ;
36
36
} ,
37
37
stop : ( ) => {
38
- return webview ?. stop ( ) ;
38
+ return webviewRef . current ?. stop ( ) ;
39
39
} ,
40
40
canGoBack : ( ) => {
41
- return webview ?. canGoBack ( ) ;
41
+ return webviewRef . current ?. canGoBack ( ) ;
42
42
} ,
43
43
canGoForward : ( ) => {
44
- return webview ?. canGoForward ( ) ;
44
+ return webviewRef . current ?. canGoForward ( ) ;
45
45
} ,
46
46
openDevTools : async ( ) => {
47
47
// TODO: use message queue instead
48
48
if ( ! isDomReady ) await sleep ( 300 ) ;
49
- webview ?. openDevTools ( ) ;
49
+ webviewRef . current ?. openDevTools ( ) ;
50
50
} ,
51
51
closeDevTools : async ( ) => {
52
52
// TODO: use message queue instead
53
53
if ( ! isDomReady ) await sleep ( 300 ) ;
54
- webview ?. closeDevTools ( ) ;
54
+ webviewRef . current ?. closeDevTools ( ) ;
55
55
} ,
56
56
sendToFrame : ( frameId , channel , ...args ) => {
57
- return webview ?. sendToFrame ( frameId , channel , ...args ) ;
57
+ return webviewRef . current ?. sendToFrame ( frameId , channel , ...args ) ;
58
58
} ,
59
59
} ) ,
60
60
[ isDomReady ]
@@ -73,7 +73,7 @@ function WebView({ tabId, onIpcMessage }, ref) {
73
73
} ;
74
74
75
75
const handleStopLoading = ( ) => {
76
- updateTab ( tabId , { url : webview . getURL ( ) , loading : false } ) ;
76
+ updateTab ( tabId , { url : webviewRef . current . getURL ( ) , loading : false } ) ;
77
77
} ;
78
78
79
79
const handleFailure = ( event ) => {
@@ -85,8 +85,8 @@ function WebView({ tabId, onIpcMessage }, ref) {
85
85
86
86
const handleDidStartNavigate = ( ) => {
87
87
updateTab ( tabId , {
88
- canGoBack : webview . canGoBack ( ) ,
89
- canGoForward : webview . canGoForward ( ) ,
88
+ canGoBack : webviewRef . current . canGoBack ( ) ,
89
+ canGoForward : webviewRef . current . canGoForward ( ) ,
90
90
} ) ;
91
91
} ;
92
92
@@ -98,20 +98,16 @@ function WebView({ tabId, onIpcMessage }, ref) {
98
98
updateTab ( tabId , { title } ) ;
99
99
} ;
100
100
101
- const webviewRef = useCallback ( ( node ) => {
102
- setWebview ( node ) ;
103
- } , [ ] ) ;
104
-
105
- useEventListener ( webview , 'ipc-message' , onIpcMessage ) ;
106
- useEventListener ( webview , 'dom-ready' , handleDomReady ) ;
107
- useEventListener ( webview , 'will-navigate' , handleChangeURL ) ;
108
- useEventListener ( webview , 'did-start-loading' , handleStartLoading ) ;
109
- useEventListener ( webview , 'did-stop-loading' , handleStopLoading ) ;
110
- useEventListener ( webview , 'did-finish-load' , handleStopLoading ) ;
111
- useEventListener ( webview , 'did-start-navigation' , handleDidStartNavigate ) ;
112
- useEventListener ( webview , 'did-fail-load' , handleFailure ) ;
113
- useEventListener ( webview , 'did-attach' , handleDidAttach ) ;
114
- useEventListener ( webview , 'page-title-updated' , handlePageTitleUpdated ) ;
101
+ useEventListener ( webviewRef , 'ipc-message' , onIpcMessage ) ;
102
+ useEventListener ( webviewRef , 'dom-ready' , handleDomReady ) ;
103
+ useEventListener ( webviewRef , 'will-navigate' , handleChangeURL ) ;
104
+ useEventListener ( webviewRef , 'did-start-loading' , handleStartLoading ) ;
105
+ useEventListener ( webviewRef , 'did-stop-loading' , handleStopLoading ) ;
106
+ useEventListener ( webviewRef , 'did-finish-load' , handleStopLoading ) ;
107
+ useEventListener ( webviewRef , 'did-start-navigation' , handleDidStartNavigate ) ;
108
+ useEventListener ( webviewRef , 'did-fail-load' , handleFailure ) ;
109
+ useEventListener ( webviewRef , 'did-attach' , handleDidAttach ) ;
110
+ useEventListener ( webviewRef , 'page-title-updated' , handlePageTitleUpdated ) ;
115
111
116
112
return (
117
113
< webview
0 commit comments