我正在处理有关在React中更新状态以进行验证的许多问题,无论如何,我总是在渲染或类似操作之后更新状态,无论如何,我看到很多人使用中的回调函数来解决此问题setState,但它总是抛出以下警告。
警告:已从更新函数内部安排了更新(setState,replaceState或forceUpdate)。更新函数应该是纯函数,且副作用为零。考虑使用componentDidUpdate或回调。
我尝试在内部进行更新componentDidUpdate,但这会导致无限循环。
这是我setState的回调函数。
state = {
index: 0,
activeInput: '',
errors: {
error: false,
errorNombre: false,
errorCuil: false,
errorEmail: false,
errorContrasena: false,
errorCalle: false,
errorNumero: false,
errorProvincia: false,
errorLocalidad: false
},
values: {...this.props.initialValues}
};
_onChangeValue = (name, value) => {
this.setState(prevState => {
return {
values: {
...prevState.values,
[name]: value
}
}, this.validate(name)
})
};
Run Code Online (Sandbox Code Playgroud)
这是Validate Function,是一个开关,所以我花了更长的时间,但问题可能是每种情况下都有另一个setState ...
validate = input => {
switch(input){
case 'nombre':
let { nombre } = this.state.values
let …Run Code Online (Sandbox Code Playgroud)