Можно, примерно, так:
render() {
const isUserInfoFormActive = ...; // your conditions
const isUserAddressFormActive = ...; // your conditions
return (
<Wrapper>
{isUserInfoFormActive && <UserInfoForm />}
{isUserAddressFormActive && <UserAddressForm />}
</Wrapper>
);
}
Если шагов много, рациональней написать FormWidget:
class FormWidget extends Component {
...
getContent() {
const { children, activeStep } = this.props;
return React.Children.map(children, (child, i) => {
if (activeStep === i + 1) {
return React.cloneElement(child, { key: i });
}
return null;
});
}
handleNext = () => {
...
};
handlePrev = () => {
...
};
render() {
...
return(
<div>
<Content>{this.getContent()}</Content>
<div>
<Button onClick={this.handlePrev}>{prevButtonLabel}</Button>
<Button onClick={this.handleNext}>{nextButtonLabel}</Button>
</div>
</div>
);
}
}
и предавать детьми все шаги:
render() {
return (
<FormWidget>
<Step1 />
<Step2 />
<Step3 />
<Step4 />
<Step5 />
<Step6 />
<Step7 />
<Step8 />
<Step9 />
<Step10 />
</FormWidget>
);
}
Пример очень абстрактный. Раскрывается сама идея.
Всю реализацию писать, все-таки, долго.