2015-11-03 5 views
1

Большинство руководств ReactJs, которые я нашел, основаны на ES5. Таким образом, я начал использовать ReactJS таким образом. Теперь, когда я знаю, как создать все мои components, пришло время создать немного single-page-application. Моя проблема заключается в том, чтобы понять, как route мой views без перезагрузки страницы. Я нахожу react-router (https://github.com/rackt/react-router), и это кажется тем, что мне нужно для моей цели, но все примеры написаны в ES6, и в настоящее время мне это пока не ясно. Несомненно, я реорганизую свое приложение в ES6, но я предпочел бы следовать тому, как я начал.ReactJS - Как проложить маршрут с помощью ES5

Есть ли кто-нибудь, кто мог бы помочь мне «перевести» реактивный маршрутизатор на ES5 и дать мне понять это?

+0

уверен, какие проблемы у вас есть? также [Babel REPL] (http://babeljs.io/repl/#?experimental=false&evaluate=true&loose=false&spec=false&code=) может быть вам полезен – knowbody

+0

Прежде всего, спасибо вам большое. Мне просто нужен ясный пример в ES5 этого инструмента, мне нужно направить мои взгляды, как простой SPA –

+0

В основном вы можете следить за документами (см. Раздел «Введение»), как есть. Единственное, что вы хотите сделать по-другому, - это «импорт». Проверьте ответ ниже. Для ES6 я настоятельно рекомендую прочитать это: http://exploringjs.com/ – knowbody

ответ

4

Вот вам пример из реагировать маршрутные учебника

render((
    <Router> 
    <Route path="/" component={App}> 
     <Route path="about" component={About} /> 
     <Route path="inbox" component={Inbox}> 
     <Route path="messages/:id" component={Message} /> 
     </Route> 
    </Route> 
    </Router> 
), document.body) 

Компонента App, О, Входящие сообщения были созданы с помощью синтаксиса ES6, но это не имеет значения, он также переводит свой синтаксис ES6 в ES5 с помощью babel, поэтому вы можете легко передать туда свои компоненты ES5.

Кроме того, эти две строки кода:

import { render } from 'react-dom' 
import { Router, Route, Link } from 'react-router' 

означает:

var render = require('react-dom').render; 
var Router = require('react-router').Router; 
var Route = require('react-router').Route; 
var Link = require('react-router').Link 

Я надеюсь, что это поможет.

Благодаря

+0

вы сделали! благодаря! могу я спросить вас, как «очистить» мой url? теперь я получаю 'http: // localhost: 8080/#/about? _k = zrvxqc'. Я бы предпочел классический url, например 'http: // localhost: 8080/about' –

+0

На самом деле вы не можете этого сделать, чтобы работать с маршрутизатором. Все время вы будете получать http: // localhost: 8080/# в качестве домашнего URL-адреса, но на своей стороне сервера вы можете настроить его как «/», и вы получите ожидаемый результат. Также я нашел несколько [Link] (http://geek.bluemangointeractive.com/react-router-an-introduction/) для вас. Надеюсь, это поможет вам –

+0

Еще раз спасибо моему другу! я дам лекцию! –

0

Предыдущий ответ забыл упомянуть о BrowserHistory, которая является неотъемлемой частью ReactRouter. Вы можете повысить уровень here.

var React = require("react"); 
var ReactDOM = require("react-dom"); 
var SchoolsList = require("./components/SchoolsList.jsx"); 

var Router = require('react-router').Router; 
var Route = require('react-router').Route; 
var Link = require('react-router').Link 

var browserHistory = Router.browserHistory; 



var _question = schoolsStore.getQuestion(); 

function render(){ 
    //console.log(_question); 
    ReactDOM.render(
    <Router history={browserHistory}> 
    <Route path="/" component={SchoolsList} question={_question.question} activeIndex={_question.activeIndex} /> 
    </Router>, 
    document.getElementById("container")); 
} 

render();