#react-native #events #webview #state #use-state
Вопрос:
Я пытаюсь создать обходной путь для вычисления/получения высоты содержимого, которое должно отображаться внутри компонента React Native WebView.
Для этого я искусственно вызываю событие onScroll с помощью Javascript , а затем пытаюсь обновить состояние с фактической высотой содержимого. Но даже журнал консоли показывает разные значения высоты содержимого, что должно вызвать обновление состояния , этого не происходит. Только при реальной прокрутке он обновляется. Но это точно, что даже без прокрутки событие запускается, когда работает журнал консоли.
Есть идеи, почему здесь не удается обновить состояние? (Во фрагменте кода отсутствуют некоторые обратные ссылки)
const [contentHeight, setContentHeight] = useState(10);
const webViewScript =
setTimeout(function() {
window.postMessage(document.body.scrollDown);
}, 1000);
true; // note: this is required, or you'll sometimes get silent failures
;
<WebView
injectedJavaScript={window.ReactNativeWebView.postMessage(${webViewScript})}
domStorageEnabled={true}
automaticallyAdjustContentInsets={false}
onScroll={(event) =>
setContentHeight(Number(event.nativeEvent.contentSize.height));
}
javaScriptEnabled
style={{ height: contentHeight }}
source={{ html: htmlTempl, baseUrl: '' }}
/>