Удалить параметр запроса из URL - PullRequest
3 голосов
/ 27 мая 2019

У меня есть следующий URL:

http://my.site/?code=74e30ef2-109c-4b75-b8d6-89bdce1aa860

И я хочу перенаправить на:

http://my.site#/homepage

Я делаю это с:

import { push } from 'react-router-redux'

...

dispatch(push('/homepage'))

Но реакция приводит меня к:

http://my.site/?code=74e30ef2-109c-4b75-b8d6-89bdce1aa860#/homepage

Как я могу сказать React сбросить параметр запроса в адресной строке браузера без перезагрузки приложения ?

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

По следующим ссылкам я клонировал git и запустил npm install как в основном каталоге, так и в базовом каталоге примера, и запустил npm start, чтобы получить рабочий пример.

https://github.com/reactjs/react-router-redux

https://github.com/reactjs/react-router-redux/tree/master/examples/basic

https://github.com/reactjs/react-router-redux#pushlocation-replacelocation-gonumber-goback-goforward

Код для удаления параметров запроса (ближе к нижней части) и проверки их удаления:

import { createStore, combineReducers, applyMiddleware } from 'redux'
import { browserHistory } from 'react-router'
import { syncHistoryWithStore, routerReducer, routerMiddleware, push } from 'react-router-redux'
import * as reducers from './reducers'

const reducer = combineReducers({
  ...reducers,
  routing: routerReducer
})

const middleware = routerMiddleware(browserHistory)

const store = createStore(
  reducer,
  applyMiddleware(middleware)
)
const history = syncHistoryWithStore(browserHistory, store)

// Dispatch from anywhere like normal.
store.dispatch(push("/?test=ok"));
// store2.dispatch(push(history.createHref("/")));
var count = 0;

history.listen(location => {
    console.log(location);
    if (count > 1) { return; }
    count++;
    store.dispatch(push({ pathname:'/', search: '' })); // Drops the params
});

Проверьте консоль, и вы увидите, что поле запроса (поиска) пусто

0 голосов
/ 27 мая 2019

Попробуйте (жестким кодом)

import { push } from 'react-router-redux'

...
const url = `${window.location.origin}/homepage`;
dispatch(push(url));

Или этот

history.location.pathname =`${window.location.origin}/homepage`;

Эти методы вообще не являются хорошей практикой, но они работают (второй точно)

Подробнее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...