Я работаю над приложением, в котором мне нужно взаимодействовать с веб-представлением.По сути, мне нужно вызвать функцию в веб-просмотре и захватить (каким-то образом), что она возвращает.
По сути, родительский класс имеет кнопку.Эта кнопка запускает функцию, вызываемую в дочернем классе, которая отправляет сообщение в веб-просмотр.Затем веб-просмотр отправляет сообщение обратно, которое вызывает функцию onMessage()
.Поэтому мой вопрос в основном таков: Как родительская функция testFunc()
может получить доступ к данным, которые вернул веб-просмотр.
Вот упрощенный пример дочернего класса.
export default class Child extends Component {
sendMessageToWebView = () => {
this.webview.postMessage("Hello WebView, from React Native");
}
html = () => {
`<body>
<script>
document.addEventListener("message", function(data) {
console.log(data);
window.postMessage("Hello from WebView :)");
});
</script>
</body>`
}
onMessage = (data) => {
console.log(data.nativeEvent.data);
return data.nativeEvent.data;
}
render() {
return (
<View>
<WebView
ref={(view) => { this.webview = view; }}
source={{ html() }}
onMessage={this.onMessage}
/>
</View>
);
}
}
Вот пример родительского класса
export default class Parent extends Component {
testFunc = () => {
this.child.sendMessageToWebView();
}
render() {
return (
<View>
<Button onPress={this.testFunc} title={'Test'} />
<Child ref={child => {this.child = child}} />
</View>
);
}
}
Я думал об использовании состояний, но в итоге столкнулся с аналогичной проблемой.Как родительская функция знает, когда состояние было изменено в дочернем классе.
Любая помощь будет принята с благодарностью.