使用renderToString在服务器端呈现我的组件。所有这一切都很好。如果我手动输入像/ register这样的URL,我的组件就会完美呈现。
问题是,在我的应用中使用<Link>
时,状态正在发生变化,但我的网址根本没有更新。
route.js:
import React from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
import { browserHistory, Router, match } from 'react-router';
import routes from './routes';
import store from './stores';
// Server rendering works identically when using async routes.
// However, the client-side rendering needs to be a little different
// to make sure all of the async behavior has been resolved before the
// initial render,to avoid a mismatch between the server rendered and client rendered markup.
match({ location:browserHistory, routes }, (error, redirectLocation, renderProps) => {
render((
<Provider store={store}>
<Router {...renderProps} />
</Provider>
), document.getElementById('root'));
});
我有一种感觉,这可能是由于浏览器历史,我有什么遗漏?
答案 0 :(得分:2)
我给了match()错误的参数。而不是:
match({ location:browserHistory, routes }
应该是:
match({ history:browserHistory, routes }