在离开页面后重置我的应用程序的redux状态
Reseting the redux state of my app after leaving page
我见过类似的问题,但没有一个真正适用。
我的应用程序所做的一切,当用户点击其中一个按钮时,该动作发出get请求并在屏幕上显示来自该请求的数据。问题是,在我离开页面后,显示的数据保留了下来。我希望每次用户离开页面时,数据都消失(因此只显示默认消息)
下面是我的相关代码:
// the actions.js:
export function fetchLogs(logsUrl){
const request = axios.get(logsUrl);
return (dispatch)=>{
request.then(({data}) => {
dispatch({type: 'FETCH_LOGS',
payload: data,
url: logsUrl});
});
}
}
//reducer-logs.js
export default function (state=null, action){
switch(action.type){
case 'FETCH_LOGS':
return {data: action.payload,
url: action.url};
break;
}
return state;
}
//reducer's index.js
const allReducers = combineReducers({
logs:Logs,
});
//log-directories.js (where the menu is with the possible options)
class LogList extends Component{
render(){
var me = this;
return (
<ListGroup>
<ListGroupItem
bsStyle="success">{this.props.directory}</ListGroupItem>
{logList.map(function (log, key) {
return (<ListGroupItem
onClick={()=>me.props.fetchLogs(me.state.url+"/"+log)}>
{log}
</ListGroupItem>);
})}
</ListGroup>
);
}
}
function mapStateToProps(state){
return {
logs: state.logs
}
}
function matchDispatchToProps(dispatch){
return bindActionCreators({fetchLogs: fetchLogs}, dispatch);
}
export default connect (mapStateToProps, matchDispatchToProps)(LogList);
//where the data from fetchLogs action is displayed: log-display-panel.js
class LogPanel extends Component{
render(){
if(!this.props.logs){
return (<ListGroupItem bsStyle="warning">
Please select a log from the list to view its content.
</ListGroupItem>);
}
else{
return (
<Panel>{this.props.logs.data}</Panel>
);
}
}
}
function mapStateToProps(state){
return{
logs: state.logs
};
}
export default connect(mapStateToProps)(LogPanel);
你可以:
-
在该组件中,使用React的
componentWillUnmount()
生命周期方法来调度一个触发Redux状态重置的动作。
相关文章:
- 我在哪里从 React Redux 应用程序中的服务器获取初始数据
- 有没有一种方法可以在IE8中解决我的Rails javascript应用程序.js的问题
- 获取包含我的谷歌应用程序脚本的页面的url
- 胡子.js卡在我的 Rails 应用程序中的 0.4.0-dev 上
- 如何消除我的应用程序上的希腊字符
- 我的应用程序中的可点击元素应始终是锚标记
- 如何创建重用我的 JS 库的 iPad 应用程序,这些库是为 Web 应用程序构建的
- ASP.NET:是否可以将CSS或Javascript注入到我的Web应用程序中的每个页面中
- 为什么IE无法正确显示我的HttpHandler Web应用程序中的特殊符号
- 为什么我的应用程序中的某些组件在IE7中工作,而在IE9中不起作用
- 为什么我的Mac应用程序中的WebView html拒绝加载JQuery或任何外部脚本
- Angularjs模式窗口在我的应用程序中的实现
- 我曾经跟随某人的代码样本,并尝试应用到我的HighChart程序,但我可以'I don’我一点也做不到
- 如何从我的web应用程序中的Java脚本文件中获得加密的密码
- 如何始终解析相对于我的web应用程序根的URL
- 我可以使用标准Javascript应用程序中的Google Polymer吗
- Facebook应用程序-我如何计算发件人邀请的朋友数量
- 访问导致我的应用程序崩溃的数组元素
- 我的网络应用程序中的谷歌地图API
- Javascript应用程序-我的代码怎么样