В состоянии в App.js у меня есть куча информации в состоянии о каждом поле:
fields: {
what_is_your_name: {
value: null,
dirty: false,
valid: null,
errorText: null,
step: 1,
validationRules: {
required: true
}
} //... etc
Когда компонент загружается, я хочу обновить, является ли он действительным - поэтому я имеюиспользовал ловушку:
useEffect(() => {
props.validateField(props.value, fieldName, props.validationRules);
}, []);
Это вызывает validateField, который должен проверить, является ли поле действительным, и, если это не так, обновить текст ошибки:
const allFields = this.state.fields;
const allValues = this.state.fields[fieldName];
var errorText = null;
if (!value) {
errorText = "This field is required";
} else {
errorText = null;
}
this.setState(
{
fields: {
...allFields,
[fieldName]: {
...allValues,
errorText: errorText
}
}
},
() => {
console.log("the state was set");
}
);
}
У меня есть 4 компонентаэкран, который должен все обновить.Состояние, относящееся к последнему компоненту, всегда обновляется, но первые 3 остаются неизменными - даже если я переключаю компоненты.
Я подозреваю, что это проблема синхронизации?
(Я попробовал другой подходпопадания метода validateField в цикл при нажатии кнопки, но это также привело к обновлению только 1)