React と React-router を使い始めたばかりで、すぐに問題が発生しました。これまでのところ、私のプロジェクトは非常に単純です。ルート上のブラウザーで「アプリ」をロードすると/
、次のエラーが表示されます。
Error: Invariant Violation: addComponentAsRefTo(...): Only a ReactOwner can have refs.
ただし、コンポーネントはブラウザーでレンダリングされますが、React は反転します。
スタック トレースは役に立ちません。最後のファイルは、React を含まない index.js ファイルであり、クラスを起動するだけです。
import App from './app/App'
(() => {
let app = new App()
app.boot()
})()
App.js には以下が含まれます。
import React from 'react'
import Router from 'react-router'
import routes from '../routes'
class App {
boot() {
Router.run(routes, Router.HistoryLocation, (Root) => {
React.render(<Root/>, document.getElementById('app'));
})
}
}
export default App
そして、ここに私のルートがあります:
import React from 'react'
import Router from 'react-router'
let Route = Router.Route
let DefaultRoute = Router.DefaultRoute
import AppView from './ui/AppView.jsx!'
import TaskView from './ui/views/TaskView.jsx!'
let routes =
<Route handler={AppView} path="/">
<DefaultRoute handler={TaskView}/>
</Route>
export default routes
AppView と TaskView も非常に単純です。
import React from 'react'
import Router from 'react-router'
let RouteHandler = Router.RouteHandler
class AppView extends React.Component {
constructor() {
super()
this.state = {}
}
render() {
return <div className="app__frame">
<h1>Planning app</h1>
<RouteHandler />
</div>
}
}
export default AppView
タスクビュー:
import React from 'react'
class TaskView extends React.Component {
render() {
return <section className="task-view">
<p>test</p>
</section>
}
}
export default TaskView
それだけです。TaskView
ルートを ではなく通常のルートとして設定すると、ルートDefaultRoute
にヒットするとエラーになります。それはバグがあると私に信じさせますTaskView
が、それはとても単純なので見つけるのは難しいです.
これはおそらく、私が見逃したばかげた単純なことです。しかし、私はそれを理解できないので、助けが必要です。ありがとう!
ツールには、JSPM と Babel を使用します。