2015-12-30 2 views
1

Предположим, пользователь должен ввести текст в поле, и если текст соответствует определенному шаблону, я отправляю его на другой маршрут. Как мне это сделать?React-Router отправить пользователя на другой маршрут

Я пытался сделать:

import React from 'react'; 
import { Navigation } from 'react-router'; 

React.createClass({ 
    mixins: [Navigation], 
    handleChange() { 
    if(...) { 
     this.transitionTo('someRoute', {id: 10}); 
    } 
    }, 
    render() { 
    <input ... onChange={this.handleChange} > 
    } 
}); 

Однако, я получаю сообщение об ошибке:

Uncaught TypeError: this.transitionTo is not a function 

Я не могу найти что-либо четкой в ​​документации, и пример выше, взято из a random link I found while Googling. Что мне не хватает/неправильно? Я использую react-router v1.0.3

ответ

1

Какая версия реагирующего маршрутизатора вы используете?

Миксины были более или менее заброшены реакцией. В response-router 1.0.0 в идеале, как вы должны выполнить перенаправление, используйте history.pushState.

Команда rackt также недавно выпустила версию rc для 2.0.0. Похоже, теперь вам нужно вручную включить историю в свой экземпляр маршрутизатора, но она не слишком отличается. Check out the upgrade guide

+0

Как указано в вопросе, я на 'v1.0.3', который по-прежнему по умолчанию по умолчанию на npm через' npm install --save response-router'. –

+0

Не видел последний абзац. Похоже, эта случайная ссылка относится к версии 1.0.0 версии реагирующего маршрутизатора. В маршрутах узлов маршрутизатор теперь передает объект истории, доступный в ваших компонентах маршрутизатора, через 'this.props.history'. У этого объекта есть 'pushState'. router 1.0.0 довольно отличается от pre-1.0.0, поэтому, надеюсь, ссылки, которые вы нашли, не ссылаются на старые вещи! – Nathan

+0

Кроме того - если вы хотите вызвать «историю» из немаршрутного компонента, вам необходимо передать объект истории в компонент. – Nathan

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