- RN과 webview간에 데이터를 주고 받는 방법에 대해 알아보도록 하겠습니다.
- RN과 webview와의 연동을 자세히 알고 싶으시다면 이전 블로그 글을 참조하시기 바랍니다.
- https://jonghyucklee.github.io/2021/09/08/react-native-webview-interface-practice/
RN에 webview와 데이터 연동을 위한 코드 작성
attribute 설명
domStorageEnabled : Dom Storage를 사용 가능하도록 합니다. 안드로이드에서만 사용 가능합니다.
sharedCookiesEnabled :
[NSHTTPCookieStorage sharedHTTPCookieStorage] 에 정의된 쿠키를 공유할 수 있습니다.
웹뷰에서 모든 request에서 사용할 수 있습니다.
default value는 false입니다.
originWhitelist:
허용 navigate의 목록입니다.
ex) [‘https://’, ‘git://’]
*은 모든 navigate에 대한 허용입니다.
유저가 navigate를 탭했을 때 whitelist에 존재하지 않는다면 그 url은 os에 의해 handling됩니다.
default whitelist는 “http://” and “https://” 입니다.
onLoadEnd:
webview가 로드가 성공혹은 실패됐을 때 트리거 되는 function입니다.
webview가 렌더링될 때 초기 data를 보내고 싶다면 이곳에서 data를 전송하면 됩니다.
onMessage:
webview 쪽에서 window.ReactNativeWebView.postMessage를 call하면 onMessage가 트리거됩니다.
이러한 설정은 webview의 global variable에 주입됩니다.
window.ReactNativeWebView.postMessage에는 data 하나의 argument가 할당됩니다.
event object를 받고 싶다면 event.nativeEvent.data를 이용합니다.
data는 string입니다.
source:
webview에 로드되는 정적 HTML 또는 URI입니다.
정적 HTML이라면 whitelist에 [“*”] 를 등록해야 합니다.
javaScriptEnabled:
Webview 내에서 Javascript를 사용할 수 있는지 여부에 대한 flag입니다.
default는 true입니다.
injectedJavaScript
Dom이 완성된 뒤 webview에서 사용할 수 있는 JS코드를 삽입하는 attribute입니다.