如何影响一个嵌套对象(React)中的一个键
How to affect just one key in a nested object (React)?
所以,我有一个组件设置如下:
export default class Login extends Component {
state = {
validatedFields: {
email: {
uiState: null,
message: null,
},
password: {
uiState: null,
message: null,
},
},
}
...etc
}
在这个Login
组件中的一个函数中,我循环遍历字段值并验证它们。在循环中,如果特定值无效,我想将其uiState
更改为字符串'error'
例如,如果只是电子邮件是错误的,新的状态将是:
export default class Login extends Component {
state = {
validatedFields: {
email: {
uiState: 'error',
message: null,
},
password: {
uiState: null,
message: null,
},
},
}
...etc
}
在ES6中最简单的方法是什么?
我想远离这样的事情:
let oldState = this.state
oldState.validatedFields.email.message = 'error'
this.setState(oldState)
对于有效地更改嵌套数组中一个键的值来说,这似乎非常冗长。
有哪些替代方案?
你可以这样做:
this.setState({
validatedFields: Object.assign({}, this.state.validatedFields,
email: {
uiState: 'error',
message: null,
})
});
对于单个更新来说,它当然不是那么冗长,但是你可以把它包装在一个函数中,并把你想要更新的字段传递给它(比如传递给新的email对象)。这可以防止变异,并允许您使用直接从其他地方获得的电子邮件对象。
相关文章:
- 如何在react js中将值从一个组件发送到另一个组件
- 如何在react js中从一个页面导航到另一个页面
- React应用程序:道具在下一个事件后更新
- React Router一直给我一个警告:你不能更改<路由器路由>
- 使用react router/react router redux将特定的redux操作绑定到一个路由
- 可以在React Native中制作一个自哈希应用程序
- React渲染一个组件,然后单击另一个React组件
- 将react组件动态插入到另一个react组件中
- 如何使用ReactDOM渲染来渲染一个react组件
- ReactJS:在循环中返回一个React组件
- 如何在一个react类的实例中选择元素
- 用Sinon存根一个React组件方法
- 生产模式下的UglifyJSPlugin显示一个React开发模式警告
- 从另一个元素创建一个React元素在ReactJs中是有效的
- ag-Grid中的cellRenderer函数能返回一个React组件吗?
- 是否有一个React生命周期方法,只在组件第一次接收到props时才做一些事情?
- 部署我的第一个React应用
- 在另一个React组件中添加新的React模块
- 一个react组件可以有多个用于子内容的区域吗?
- 为什么一个react onClick事件附加一个问号到我的url