Reactjs 反应路由器通用。为什么根组件不重新渲染?
我有通用应用程序(服务器渲染)。 我的routes.js如下所示 routes.jsReactjs 反应路由器通用。为什么根组件不重新渲染?,reactjs,redux,react-router,universal,isomorphic-javascript,Reactjs,Redux,React Router,Universal,Isomorphic Javascript,我有通用应用程序(服务器渲染)。 我的routes.js如下所示 routes.js ... -- Root.js 类根扩展组件{ ... render(){ 返回( {this.props.children} ); } } -- server.js app.use((请求、回复)=>{ 匹配({routes,location:req.url},(错误,重定向位置,renderProps)=>{ 如果(错误){ ... }else if(重定向位置){ ... }else if(渲染器操作
...
--
Root.js
类根扩展组件{
...
render(){
返回(
{this.props.children}
);
}
}
--
server.js
app.use((请求、回复)=>{
匹配({routes,location:req.url},(错误,重定向位置,renderProps)=>{
如果(错误){
...
}else if(重定向位置){
...
}else if(渲染器操作){
常量initialState={};
常量存储=配置存储(初始状态);
获取组件数据(store.dispatch、renderProps.components、renderProps.params)。然后(()=>{
常量html=renderToString(
);
send(renderFullPage({html,initialState:store.getState()}));
});
}否则{
...
}
});
});
我的根和视图组件连接到存储(redux)。
它在没有服务器渲染的情况下运行良好,并且在服务器上的初始渲染效果良好。当我试图更改状态并期望根组件获得新的道具并重新渲染树时,问题就开始了,但在我的情况下,根组件并没有重新渲染,视图组件也没有重新渲染
我不明白怎么会这样?为什么我的树的一部分只是静态html
更新:
我还没有找到答案,但我假设根并没有给出新的状态。如果是,为什么根组件没有连接到存储 我也想知道!我也想知道!
<Route path="/" component={Root}>
<Route path="sales/:id" component={View} />
...
</Route>
class Root extends Component {
...
render() {
return (
<div>
<Header {...someProps} />
{this.props.children}
</div>
);
}
}
app.use((req, res) => {
match({ routes, location: req.url }, (error, redirectLocation, renderProps) => {
if (error) {
...
} else if (redirectLocation) {
...
} else if (renderProps) {
const initialState = {};
const store = configureStore(initialState);
fetchComponentData(store.dispatch, renderProps.components, renderProps.params).then(() => {
const html = renderToString(
<Provider store={store}>
<RouterContext {...renderProps} />
</Provider>
);
res.status(200).send(renderFullPage({ html, initialState: store.getState()}));
});
} else {
...
}
});
});