javascript - React Router 所需上下文 `router` 未在 `Link` 中指定

标签 javascript reactjs

我正在尝试让路由正常工作。任何帮助将不胜感激。我已经和这个斗争太久了:(

由于以下错误,Blog.js 无法呈现。

这是错误:

警告:上下文类型失败:Link 中未指定所需的上下文 router。检查 BlogList 的渲染方法。 bundle.js:26589 警告:基于所有者和基于父级的上下文不同(值:undefined 与 `function (props, context) { //此构造函数被模拟覆盖。使用参数

我期望发生什么:

当博客页面(Blog.js)呈现时,它将有一个文章列表。当用户单击文章时,他们将被定向到: http://site/blog/articleId (BlogView.js)

代码:

Main.js

Router.run(routes, Router.HistoryLocation,function (Handler) {
    React.render(<Handler />, document.getElementById('startApp'));
});

App.js

 var App = React.createClass({
    render : function () {
        return (
            <div>
                <Header />
                <RouteHandler />
            </div>
        )
    }
});

module.exports = App;

路由器:

<Route name="app" path="/" handler={App}>
    <DefaultRoute handler={Home}/>
    <Route name="home" path="/home" handler={Home}/>
    <Route name="blog" path="/blog" handler={Blog}/>
    <Route name="blogView" path="/blog/:id" handler={BV}/>
    <Route name="about" path="/about" handler={About}/>
</Route>

组件: 博客.js:

render: function () {

    return (

        <div className="container-fluid">
            <BlogList blogEntries = {this.state.blogEntries} rawMarkup={this.state.rawMarkup}/>
        </div>
    )
}

BlogList.js: 返回(

        <div className="container-fluid" style={{
                paddingTop: '10px'
        }}>

            <div style={{
                paddingLeft: '100px',
                paddingRight : '100px'
            }}>
                <div style={{
                backgroundColor : 'white',
                boxShadow: '10px 10px 5px #888888',
                border: '2px solid black'
              }}>
                    <Link to="blogView" className="text-center">test </Link>

                    <div className="text-center">
                    </div>
                </div>
            </div>
        </div>
    )

最佳答案

index.html 中父级“div”的 id 是什么?

应该是

  <div id="startApp">
  </div>

但是,如果您遵循Corey House“Building Applications with React and Flux”的类(class),我相信index.html中的父div应该是

<div id="app">
</div>

如果是这种情况,那么您的 Main.js 应该是

Router.run(routes, Router.HistoryLocation, function(Handler) {
  React.render(<Handler/>, document.getElementById('app'));
});

注意“app”而不是“startApp”。

关于javascript - React Router 所需上下文 `router` 未在 `Link` 中指定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591525/

相关文章:

javascript - react 。呈现和更新 1500 个 <li> 元素的简单列表时非常慢。我认为 VirtualDOM 很快

javascript - 如何使用单击按钮更改状态值

javascript - ReactJS - setState 不是一个函数

javascript - 渲染 React.Component

javascript - NodeJs 中的过期 key

javascript - DOJO 1.6 和连接纯 HTML 组件上的事件

javascript - MooTools/JavaScript 变量范围

javascript - JavaScript : chunk method

php - 跨子域ajax长轮询

javascript - webpack-bundle-analyzer 显示 webpack -p 不删除开发依赖 react-dom.development.js