我如何在React JS中处理状态错误
How can I handle errors in state in React JS?
在我的store中,我设置了一些函数来处理API调用中的错误。
一个例子是授权-如果用户不能查看project
,他们会得到一个未经授权的错误。
在我的商店中,我为状态设置了一个error
属性。
然后,在我的组件的渲染函数中,我首先检查this.state.error
。这工作得很好——我呈现了一个包含错误消息和代码的重用错误组件。
问题是,我需要在用户继续移动后将错误状态重置为null -然而重置状态会导致组件重新呈现。
我当前的方法(在我组件的渲染函数中):
if (this.state.error) {
return (
<Error
errorTitle={this.state.errorCode}
errorMessage={this.state.error}
clearErrors={this.clearErrors}
/>
)
}
和一个属于同一类的函数:
clearErrors: function () {
this.setState({
error: null,
errorCode: null
});
},
然后是Error组件
var Error = React.createClass({
clearErrors: function () {
this.props.clearErrors();
},
render: function () {
return (
<Panel className='errorPanel' header={this.props.errorTitle} bsStyle='danger'>
<p>{this.props.errorMessage}</p>
<a href='#/dashboard'>
<Button onClick={this.clearErrors}>Return to Dashboard</Button>
</a>
</Panel>
)
}
});
问题很明显——在onClick实际将用户返回到仪表板之前,它很快呈现了用户不应该能够看到的组件。
我应该如何处理这个?
错误码不应该处于组件状态。因为(显然)它与组件状态不完全对应。从我收集你正在寻找的是以下状态:
- 错误代码= not null:显示错误组件
- 错误代码重置为null:错误组件仍然显示(因为你不想重新渲染组件)
所以我建议从状态中删除错误,并做一些类似的事情:
render() {
errorcode = this.props.errorcode;
if (this.props.errorcode) {
return <ErrorComponent...>
}
clearErrors() {
errorcode = null;
}
相关文章:
- AngularJS&Google可视化-使用状态更改处理程序(Google API)在HTML页面上查看$sco
- 在基于Strophe.js的聊天应用程序中处理状态
- 如何处理 React / Flux 组件中的状态转换
- 处理角度.js承诺错误状态
- 如何处理需要子组件状态的Meteor数据
- 如何在React应用程序中处理权限检查(Redux中的状态维护)
- React.js-通过事件处理程序更改所有者组件的状态
- 如何在 AngularJS 中同时处理 DOM 操作和状态更改
- 反应.js - 处理哑儿童状态的模式
- 使用 ajaxError 全局处理程序显示 HTTP 状态代码 401 详细信息
- 尝试在状态“root.loaded.saved”中处理事件“成为无效”
- 在 Angular.js 中更改视图时处理$scope状态和值的正确方法是什么?
- 将承诺置于待处理状态
- 在 JavaScript 中的事件处理中获取对象的状态
- 什么'是在AngularJS中处理应用程序状态和事件广播的最佳实践
- 在尝试管理和访问不同组件和处理程序方法中的状态时,我可以使用RxJS与Redux/context吗
- 无法使用节点预处理程序重建串行端口:404状态代码下载64位nw.lib
- 我如何在React JS中处理状态错误
- 如何使用jquery处理状态代码307重定向
- 如何处理状态代码未处理的 ajax 错误