2015-06-04 2 views
0

я бегу через реакцию маршрутизаторами учебник нашел here и я в настоящее время озадачен ...React-маршрутизатор: компонент не определен

React-маршрутизатор не распознает компонент.

(я использую React.js с Rails)

enter image description here

Вот код:

var DefaultRoute = ReactRouter.DefaultRoute; 
var Link = ReactRouter.Link; 
var Route = ReactRouter.Route; 
var RouteHandler = ReactRouter.RouteHandler; 

var App = React.createClass({ 

    getInitialState: function() { 
    return { 
     showTags: false, 
     current_user: this.props.current_user 
    }; 
    }, 

    _handleToggleTags: function() { 
    this.setState({ 
     showTags: !this.state.showTags 
    }) 
    }, 
    render: function() { 
    return <div> 
     <Header 
     onToggleTags={ this._handleToggleTags } 
     user={this.props.current_user} 
     /> 

     <RouteHandler/> 

     <div id="images"> 
      <ImageBox/> 
     </div> 
    </div>; 
    } 
}); 

var routes = (
    <Route name="app" path="/" handler={App}> 
    <Route name="tags" handler={TagsBox}/> 
    </Route> 
); 

ReactRouter.run(routes, function (Handler) { 
    React.render(<Handler/>, document.body); 
}); 

Если переместить TagsBox, прежде чем App он работает, хотя никто не кажется, делая это. Что мне не хватает?

Если это делает другой, нынешняя структура моих компонентов:

  • app.js.jsx
  • Теги
    • _tags_box.js.jsx
+0

Можете ли вы уточнить, что вы подразумеваете под «двигаться TagsBox перед App»? Определен ли он в том же файле? Компонент, который не определен, звучит как недостающий импорт. –

+0

Является ли ваша библиотека React загружена в браузере с помощью тега скрипта? –

+0

@AdamStone - если я создаю класс TagsBox перед классом App – cupcakekid

ответ

0

В вашей позиции лучше всего запускать маршрутизатор после загрузки всех скриптов.

Попробуйте обертывание метод run в этом коде:

document.addEventListener("DOMContentLoaded", function() { 
    ReactRouter.run(routes, function (Handler) { 
    React.render(<Handler/>, document.body); 
    }); 
} 
+0

в идеале, но вы укусите пулю и попробуете интегрировать более современную базу конвейера активов напр. webpack, поскольку это поможет сделать зависимости более ясными и предлагает множество тонкостей, например, например. перезагрузка горячего кода и т. д. – Daniel