Реактивный условный роутер для Cordova - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь переключиться между историей хэшей и историей браузера для приложения React в Cordova.

В Интернете я хочу использовать историю браузера, в Кордове я должен использовать HashHistory

Я пробовал что-то вроде

import createBrowserHistory from 'history/createBrowserHistory'
import createHashHistory from 'history/createHashHistory'


export default window.cordova ? createHashHistory() : createBrowserHistory()

Но ничего не загружается.

createHashHistory() works fine. 

Есть ли способ сделать это условным?

т.е. так в кордове он использует историю хешей, а если нет, то будет использовать историю браузера?

Проблема подсвечена здесь с этим хаком

   let baseName = document.location.pathname.split('index.html')[0] + 'index.html';

Но я не уверен, как это реализовать условно.

1 Ответ

0 голосов
/ 06 декабря 2018
import React from 'react';
import ReactDOM from 'react-dom';
import createBrowserHistory from 'history/createBrowserHistory'
import createHashHistory from 'history/createHashHistory'
import App from './App'

var history
const startApp = () => {
    ReactDOM.render(
        <Router history={history} >
            <Route component={App} />
        </Router>,
    document.getElementById('root'));
}

if(!window.cordova) {
    history = createBrowserHistory()
    startApp()
}
else{
    history = createHashHistory()
    document.addEventListener('deviceready', startApp, false)
}
...