2016-08-19 6 views
2

WebView 구성 요소 내에서 함수를 생성하고 React Native 기능을 사용할 수 있습니까?React Native - Webview 호출 Reative 네이티브 기능

+0

정확히 달성하기를 원하십니까? React native는 네이티브 android 또는 ios API를 사용하여 React 네이티브로 응용 프로그램 빌드에 힘을 실어주는 강력한 기능입니다. WebView를 사용하지 않고도 다른 좋은 방법이있을 수 있습니다. –

+0

귀하의 요구 사항에 대해 더 구체적으로 말씀해주십시오. –

답변

1

가능 합니다만 이것이 유일한 방법인지는 확실하지 않습니다.

기본적으로 onNavigationStateChange 이벤트 핸들러를 설정하고 탐색 URL에 함수 호출 정보를 포함 할 수 있습니다. 여기에 개념 예가 나와 있습니다.

에서이

render() { 

    return <WebView onNavigationStateChange={this._onURLChanged.bind(this)} /> 
} 

_onURLChanged(e) { 

    // allow normal the natvigation 
    if(!e.url.startsWith('native://')) 
     return true 
    var payload = JSON.parse(e.url.replace('native://', '')) 
    switch(e.functionName) { 
     case 'toast' : 
      native_toast(e.data) 
     break 
     case 'camera' : 
      native_take_picture(e.data) 
     break 
    } 
    // return false to prevent webview navitate to the location of e.url 
    return false 

} 

그냥 웹보기의 탐색 이벤트를 트리거 이것을 사용, 네이티브 메소드를 호출하려면 기본 컨텍스트를 반응 URL의 함수 호출 정보를 포함.

window.location = 'native://' + JSON.stringify({ 
    functionName : 'toast', data : 'show toast text' 
}) 
0

이 예는 가능, 그 react-native-webview-bridge에 대한 패키지를 existe. 나는 그것을 생산에 많이 사용했고 완벽하게 작동합니다.

+0

Hi Sidali Hallak, 네이티브 버전 u를 사용하고 있습니까? 왜냐하면 0.30을 사용하고 있기 때문입니다. 이 문제의 원인은 https://github.com/alinz/react-native-webview-bridge/issues/137 – ChokYeeFan

+0

입니다. 저는 0.25 개월 전, 두 달 전에 프로젝트를 마쳤습니다. –

0

당신은 부하에 웹뷰에 자바 스크립트 함수를 삽입 할 수 있으며, 다음 IN Here

-2

나는 확실하지 않다 더 많은 정보를 주입 된 함수로부터 응답을 얻을 수의 onMessage를 사용하지만, 내 생각은 - 당신이 할 수있는

아니. Webview는 Webview 구성 요소에서 정의 할 수있는 js 부분 만로드 할 수 있습니다. 이것은 다른 구성 요소와 완전히 별개이며 단지 볼 수있는 영역입니다.

관련 문제