Вопрос проверяет понимание способов интеграции React-приложения, запущенного в WebView нативного приложения (iOS/Android), с нативным кодом для создания гибридных приложений.
Гибридные приложения, где React-интерфейс работает внутри WebView, требуют надежного канала связи между JavaScript-кодом и нативной платформой (Java/Kotlin для Android, Objective-C/Swift для iOS). Этот канал называется мостом (bridge).
Процесс обычно включает следующие шаги:
window.NativeBridge).Ниже приведен упрощенный пример для Android (Kotlin) и соответствующего React-кода.
// Android (Kotlin) - настройка WebView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val webView = WebView(this).apply {
settings.javaScriptEnabled = true
addJavascriptInterface(NativeBridge(this@MainActivity), "NativeBridge")
loadUrl("file:///android_asset/index.html")
}
setContentView(webView)
}
}
class NativeBridge(private val context: Context) {
@JavascriptInterface
fun showToast(message: String) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}
}
// React-компонент
import React from 'react';
const App = () => {
const sendToNative = () => {
if (window.NativeBridge && window.NativeBridge.showToast) {
window.NativeBridge.showToast('Hello from React!');
} else {
console.warn('Native bridge not available');
}
};
return (
Show Native Toast
);
};
export default App;Вывод: Такой подход стоит применять, когда нужно быстро разработать кроссплатформенный интерфейс с использованием React, при этом требуются некоторые нативные возможности. Он хорошо подходит для прототипов, внутренних инструментов или приложений, где производительность не является критическим фактором. Для высокопроизводительных или сложных в плане UI приложений стоит рассмотреть нативные решения или фреймворки вроде React Native.