0

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 を使用します。

4

1 に答える 1

1

結局のところ、バグのあるバージョンの React-router を使用していました。私は JSPM を使用して master ブランチをプルしました。その他、すべてが機能します。バージョン 0.13.3 は私が持っていたもので、この奇妙なエラーをスローしました。

jspm remove react-router
jspm install react-router=github:rackt/react-router@master

魔法の言葉。

于 2015-05-26T16:34:54.430 に答える