728x90
반응형
react native webview 는 고질적인 문제가 있다.
이문제는 크롬의 업데이트에서부터 시작됐다.
webview 에서 크래시가 지 않는 방법은 대부분의 RN 개발자들이 검색 해봤을 것이다.
가장 저차원 적인 문제해결은 android manifest 에
android:hardwareAccelerated="true"
값을 변경하는 것이다.
하지만 해당 hardwareAccelarted 를 전역에서 변경하면 react-native-video 같은 화면이 정상작동하지 않을 수 있다.
대부분의 개발자들이 workaround 의 한 방법으로
Webview 스타일에
style={{
width: deviceWidth - 2 * horizontalPadding,
minHeight: 1,
opacity: 0.99,
}}
해당방법으로 opacity 를 넣는다.
해당 방법으로는 해결이 된다.
오늘 작성하는 글은
해당 방법으로도 해결되지 않는 버그가 생겼을때 해결하는 방법이다.
주로 webview 의 길이가 많이 길어지기에, scrollview 안에서 사용하는 경우가 많은데,
scrollview안에 있는 webview 의 길이가 매우 길어지면(react-native-webview 에는 5000px 정도로 나와있다)
스크롤이 업되거나 다운되면서 스크롤의 범위가 벗어날때, 크래시되는 경우가 발생한다.
scrollview의 bounce가 실행되며, 앱이 꺼지는 경우가 있는데
웹뷰를 포함한 scrollview 에서

bounces={false}
alwaysBounceHorizontal={false}
alwaysBounceVertical={false}
overScrollMode="never"
해당 props 로 bounce 액션을 막아주면 해결된다.
728x90
반응형