index.tsx
1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import React, { useRef, useEffect, useReducer } from 'react';
import { useImmerReducer } from '@huse/immer';
import RNCWebview from 'react-native-webview';
import { reducer, defaultState, webActions, WebviewActions } from './reducer';
import { BGView } from '../../component/View';
import Header from './Header';
import Body from './Body';
import { MainStackScreenProps } from '../../type/Navigation';
import Toolbar from './Toolbar';
import ProgressBar from './ProgressBar';
const WebviewScreen = ({
navigation,
route,
}: MainStackScreenProps<'WebviewScreen'>) => {
const paramUri = route.params?.uri ?? 'https://about:blank';
const [state, dispatch] = useImmerReducer(reducer, {
...defaultState,
url: paramUri,
});
const webview = useRef<RNCWebview>(null);
return (
<BGView>
<Body
initialUrl={paramUri}
state={state}
dispatch={dispatch}
ref={webview}
/>
<ProgressBar progress={state.progress} loading={state.loading} />
<Toolbar state={state} dispatch={dispatch} webview={webview} />
</BGView>
);
};
export default WebviewScreen;