2016-11-02 2 views
0

В настоящее время у меня есть компонент с обработчиком, который работает следующим образом:Реагировать маршрутизатор: hashHistory добавив параметры запроса не засавить

_redirect() { 
    hashHistory.push(`/somepath?a=1&b=2`) 
} 

Компонент маршрут /somepath сконфигурирован, чтобы захватить параметры запроса и хранить их в состояние как таковое:

class SomeComponent extends React.Component { 
    constructor (props) { 
    super(props) 
    this.state = { 
     a: this.props.location.query.a || 5, 
     b: this.props.location.query.b || -2, 
    } 
    } 

Если я сейчас на другом пути, тогда все работает отлично. Проблема, с которой я сталкиваюсь, заключается в том, что если я уже в /somepath без каких-либо параметров, и я выполняю обработчик, параметры будут добавлены к URL-адресу (путь изменяется на /somepath?a=1&b=2 в строке url), но сама страница не повторно вызывать.

Я понимаю, что конструктор выполняется только при начальной загрузке, что объясняет, почему он не захватывает параметры запроса и не сохраняет его в состоянии, если только это не новая перезагрузка. Есть ли способ сделать страницу чувствительной к новым параметрам, добавленным hashHistory.push()?

+0

Просьба указать код, чтобы узнать, в чем проблема –

+0

@ RazvanAlex Done! –

ответ

0

Вы можете взять параметры запроса в componentDidMount и componentDidUpdate. Когда вы сначала наберете /somepath, будет называться componentDidMount из SomeComponent. Затем измените на /somepath?a=1&b=2, componentDidUpdate будет называться (в это время componentDidMount не будет называться).

См. this document. Посмотрите, как он перемещается от /invoices/123 до /invoices/789.

Смежные вопросы