在React Router中,当页面改变时更新状态
Update state when page changes in React Router
我有
const Page = React.createClass({
getInitialState() {
return { page: {} };
},
componentDidMount() {
const pageId = this.props.params.pageId;
socket.emit('get page', pageId, (page) => {
this.setPage(page);
});
},
setPage(page) {
this.setState({
page: page
});
},
render() {
return (
<div>
<h2>{this.state.page._id}</h2>
<p>{this.props.params.pageId}</p>
</div>
);
},
});
但似乎componentDidMount
工作时,我加载页面,但如果我点击链接到其他页面,它不会更新页面。
在render
函数中,this.props.params.pageId
在我更改页面时更新,但this.state.page._id
与加载页面时相同。
我试过用
调试 componentDidMount() {
console.log('TEST IF THIS METHOD IS FIRED');
const pageId = this.props.params.pageId;
socket.emit('get page', pageId, (page) => {
this.setPage(page);
});
},
,但当我单击其他页面时,该函数不会被触发。我也试过用onChange
代替componentDidMount
,但它也不起作用。
可以使用componentDidUpdate(prevProps)
componentDidUpdate(prevProps) {
if (prevProps.params !== undefined && this.props.params !== undefined) {
if (prevProps.params.pageId !== this.props.params.pageId) {
const pageId = this.props.params.pageId;
socket.emit('get page', pageId, (page) => {
this.setPage(page);
});
}
}
},
相关文章:
- 变量dos'即使我可以返回更新后的值,也不会改变
- ReactJS:如何在改变状态后立即更新组件
- 是否在应用程序缓存清单更新时更新所有文件?或者只是改变了的那些
- ng节目没有'当我的收音机型号改变时,我不会更新
- 在不改变循环速度的情况下更改更新速度
- 如何更新谷歌地图,如果它的地图画布改变了它的尺寸
- 当模型更新时,backbone和knockout如何使视图改变
- 在ipad上基于方向改变更新值
- Angularjs指令:如何在属性改变后更新模板中的ng-class
- 当变量改变时,在AngularJS中更新视图
- AJAX数据库更新与CSS按钮颜色改变使用Codeigniter
- 当绑定变量改变时,Angularjs选择不更新
- 在AngularJs中,基于指令属性的改变来更新UI
- 为什么knockoutjs js不't更新视图,如果一些子数组被改变
- 当引用对象改变时,react .js视图不更新
- Vue-router 2改变路由,但不更新视图
- 谷歌地图更新标记从改变mysql坐标
- 在Angular和Nodejs应用中,如果我改变了html文件,它也不会更新浏览器
- 更改url后,Angular模型不会改变(更新)
- 在一个选项卡的状态改变后,Onsen选项卡没有正确更新