
setWizardState(data) {
// выставил доп ключи, которые не нужны на сервере
Object.keys(data.steps).forEach(stepKey => {
data.steps[stepKey]['forcedOpen'] = false;
});
console.log('old state: ', Object.assign({}, this.state))
if (this.state.wizard.steps !== data.steps) {
this.setState(state => {
state.wizard.steps = data.steps;
state.wizard.active = true;
return Object.assign({}, {wizard: state.wizard})
}, () => {
console.log('new state: ', Object.assign({}, this.state))
if (this.state.wizard.steps.company.status === 'next') {
// если следующий таб в визарде next, я лочу ссылку на него
this.lockTab('company')
};
// запрос к настройкам текущего таба, которые попадут в его компонент пропсом
this.requestDataByRoute();
})
}
}toggleWizard(value) {
this.setState(state => {
state.wizard.active = value;
return {wizard: state.wizard}
})
}if (this.state.wizard.steps !== data.steps) {
this.setState(state => {
state.wizard.steps = data.steps;
state.wizard.active = true;
}
}
Далее, что зависит от этого стейта, уже калькулируется в следующей функции, и тд
setWizardState(data) {
Object.keys(data.steps).forEach(stepKey => {
data.steps[stepKey]['forcedOpen'] = false;
});
this.setState({wizard: {active: true, steps: data.steps}}, () => {
if (this.state.wizard.steps.company.status === 'next') {
this.lockTab('company')
};
this.requestDataByRoute();
})
}
Сорри, начальную стейт как проп в чайлд - это антипатерн
<Component prop={this.state.key || {}} .../>this.state = {
inputVal: props.inputValue
}
Using props to generate state in getInitialState often leads to duplication of “source of truth”, i.e. where the real data is. This is because getInitialState is only invoked when the component is first created.