与Go中的孩子一起使用的React-Router如何工作?

时间:2016-03-29 19:23:21

标签: go reactjs routing react-router

我试图在Go中使用react-router和服务器。

我做了一些测试,但我不能做我想做的事。

我的反应成分:

var App = React.createClass({
    render: function(){
        return (
            <div>
            <h2>App</h2>
            <li><Link to="/page1">Page 1</Link></li>
            <li><Link to="/page2">Page 2</Link></li>
            </div>
        )
    }
})

var Page1 = React.createClass({
    render: function(){
        return (
            <div>
            <h2>Page 1</h2>
            <li><Link to="/page2">Page 2</Link></li>
            </div>

        )
    }
})

var Page2 = React.createClass({
    render: function(){
        return (
            <div>
            <h2>Page 2</h2>
            <li><Link to="/page1">Page 1</Link></li>
            </div>

        )
    }
})

我的反应路线:

   ReactDOM.render((<Router history={browserHistory}>
    <Route path="/" component={App}>
      <Route path="page1" component={Page1} />
      <Route path="page2" component={Page2} />
    </Route>
  </Router>), document.getElementById('app'))

我的服务器:

func Render(c web.C, w http.ResponseWriter, r *http.Request) {
        RenderHTMLPage(w, "index.html")
}

func main() {
        goji.Get("/page1", Render)
        goji.Get("/page2", Render)
        goji.Get("/", Render)
        goji.Serve()
    }

我的问题是当我点击“应用”中的“链接”时组件,例如:

<li><Link to="/page1">Page 1</Link></li>

网址改变

  

http://localhost:8000/page1

但是实际组件已经是App而不是Page1,因此url会更改但不会更改组件。 如果我直接加载url,我会得到相同的结果。

有人帮助我吗? 谢谢#)

1 个答案:

答案 0 :(得分:1)

这不是一个go问题,而是一个反应问题,你需要呈现App组件的子节点以便显示其他两个组件,这个代码片段取自React Router的文档({{3 }}):

const routes = (
  <Route component={App}>
    <Route path="groups" component={Groups} />
    <Route path="users" component={Users} />
  </Route>
)

class App extends React.Component {
  render () {
    return (
      <div>
        {/* this will be either <Users> or <Groups> */}
        {this.props.children}
      </div>
    )
  }
}