首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >connected-react-router应用程序更新url,但不更新组件

connected-react-router应用程序更新url,但不更新组件
EN

Stack Overflow用户
提问于 2018-12-12 22:39:07
回答 1查看 350关注 0票数 1

我已经仔细检查了所有的教程和常见问题,但我似乎找不到我的问题所在。

完整示例如下:https://stackblitz.com/edit/react-hmuwhx?embed=1&file=App.js

下面是一些有趣的代码。感谢您的帮助!

代码语言:javascript
复制
export const createRootReducer = history =>
  combineReducers({
    router: connectRouter(history),
    ui: uiReducer,
    user: userReducer
  });

const middlewares = [ReduxThunk];

export const history = createBrowserHistory();

export const store = createStore(
  createRootReducer(history),
  compose(applyMiddleware(...middlewares, routerMiddleware(history)))
);

<Provider store={store}>
  <App history={history} />
</Provider>

export class App extends React.Component {
  render() {
      return (
      <ConnectedRouter history={this.props.history}>
          <div className="full-height">
          <InitializingContainer>
              History length: {this.props.history.length}
              <Switch>
              <Route exact={true} path="/" component={HomePage} />
              <Route path="/test" render={() => <div>Test</div>}/>
              </Switch>
          </InitializingContainer>
          </div>
      </ConnectedRouter>
      );
  }
}

export class HomePage extends React.Component {
  render() {
    return (
      <ul>
        <li>You are here: {this.props.match.path}</li>
        <li>
          <Link to="/">Home</Link>
        </li>
        <li>
          <Link to="/test">Test</Link>
        </li>
      </ul>
    );
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-13 14:09:41

问题是您的InitializingContainer没有接收路由器属性,因此没有监听路由历史上下文更改。

connect中使用withRouter,像这样

代码语言:javascript
复制
export const InitializingContainer = connect(
  mapStateToProps,
  mapDispatchToProps
)(withRouter(Initializing));

解决了问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53745399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档