【发布时间】:2017-12-14 01:57:12
【问题描述】:
我有多个渲染相同组件的路由。根据我希望组件获取不同数据的路线。但是,由于我一直渲染相同的组件,所以当我单击链接标记(从位于布局组件中的导航栏)到另一个渲染相同组件的路由时,React 看不到 DOM 的任何更改。这意味着组件不会使用新数据重新渲染。这是我的路线:
class App extends Component {
render() {
return (
<BrowserRouter>
<Provider store={store}>
<Layout>
<Switch>
<Route exact path="/" component={Home} />
<Route exact path="/fashion" component={PostTypePageContainer} />
<Route exact path="/beauty" component={PostTypePageContainer} />
</Switch>
</Layout>
</Provider>
</BrowserRouter>
);
}
}
export default App;
这是我每次都想用新数据重新渲染的 PostTypePageContainer 组件:
class PostTypePageContainer extends Component {
componentDidMount() {
let route;
switch (this.props.location.pathname) {
case '/fashion':
route = '/fashion';
break;
case '/beauty':
route = '/beauty';
break;
default:
console.log('No data was found');
}
let dataURL = `http://localhost:8888/my-site//wp-json/wp/v2${route}?_embed`;
fetch(dataURL)
.then(res => res.json())
.then(res => {
this.props.dispatch(getData(res));
});
}
render() {
let posts = this.props.postData.map((post, i) => {
return <PostTypePage key={i} props={post} />;
});
return <div>{posts}</div>;
}
}
const mapStateToProps = ({ data }) => ({
postData: data.postData
});
export default connect(mapStateToProps)(PostTypePageContainer);
如何每次都重新渲染该组件?
【问题讨论】:
标签: reactjs react-router