@progerstas

Как сделать так, чтобы ссылки открывались в приложении?

Вот код который я использую:
import React from 'react'
import {View, Text, StyleSheet} from 'react-native'
import {WebView} from 'react-native-webview'

export const Browser = props => {
    webview = null

    const changeUrlHandler = event => {
        console.log(event)
        props.setUrl(event.url)
    }

    return (
        <View style={styles.fix}>
            <WebView
            source={{ uri: props.url }}
            ref={(ref) => (webview = ref)}
            onNavigationStateChange={changeUrlHandler}
            sharedCookiesEnabled={true} />
        </View>
    )
}

const styles = StyleSheet.create({
    fix: {
        flex: 1,
        width:"100%",
        height:"100%",
    }
})


Я пытаюсь сделать так, чтобы ссылки открывались в приложении, но при нажатии на ссылку на сайте, она открывается в google chrome
  • Вопрос задан
  • 221 просмотр
Пригласить эксперта
Ответы на вопрос 1
RomReed
@RomReed
JavaScript, Flutter, ReactNative, Redux, Firebase
onShouldStartLoadWithRequest = (event) => {
        __DEV__ && console.log('event.url = ', event.url);
        if (event && event.url && event.url.includes("doubleclick.net")) {
            return true;
        }

        if (event && event.url && event.url.includes("api-maps.yandex.ru")) {
            // Linking.openURL(event.url).then().catch(console.log);
            return false;
        }
        if (event && event.url && event.url.includes("intellectmoney.ru")) {
            return true;
        }


        if (event && event.url && !event.url.includes(HOME_URL) && event.url !== "") {
            Linking.openURL(event.url).then().catch(console.log);
            return false;
        }
        return true;
    };



<WebView
                                    source={{uri: this.url}}
                                    ref={webview => (this.webview = webview)}
                                    injectedJavaScript={INJECTED_JAVASCRIPT}
                                    javaScriptEnabled={true}
                                    onShouldStartLoadWithRequest={this.onShouldStartLoadWithRequest}
                                
                                    }}

                                />


в onShouldStartLoadWithRequest попадает ваш урл. вы можете остановить загрузку страници и перенаправить новую страницу используя ref. Почитайте документацию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект