У меня есть домашний компонент, который содержит другие компоненты. Одним из компонентов является многоэтапная форма регистрации, состоящая из трех этапов: 1. Выберите «План», «2. Детали учетной записи» и 3. Страница «Спасибо». Компонент Home отображает первый шаг многоэтапной формы регистрации, которая является компонентом Choose Plan.
После нажатия на план я хочу, чтобы компонент «Учетная запись» открывался на той же странице, перезаписывая компонент «Домой» вместо замены текущего компонента. В то же время я хочу, чтобы реквизиты передавались дочерним компонентам.
Домашний компонент, содержащий SignUpForm
class Home extends Component {
render() {
return (
<div>
<Video/>
<Featured/>
<SignUpForm />
</div>
);
}
}
Форма многоэтапной регистрации -
import React, { Component } from "react";
import Plan from "./Plan";
import Account from "./Account";
import ThankYou from "./ThankYou";
export default class SignUpForm extends Component {
state = {
step: 1,
account_type: "",
first_name: "",
last_name: "",
email: "",
password: "",
};
// Proceed to next step
nextStep = () => {
const { step } = this.state;
this.setState({
step: step + 1
});
console.log(this.state.step);
};
// Go back to previous step
prevStep = () => {
const { step } = this.state;
this.setState({
step: step - 1
});
};
// Handle fields change
handleChange = input => e => {
this.setState({ [input]: e.target.value });
};
render() {
const { step } = this.state;
const {
account_type,
price,
first_name,
last_name,
email,
password,
token
} = this.state;
const values = {
account_type,
price,
first_name,
last_name,
email,
password,
token
};
switch (step) {
case 1:
return (
<Plan
nextStep={this.nextStep}
handleChange={this.handleChange}
values={values}
/>
);
case 2:
return (
<Account
nextStep={this.nextStep}
prevStep={this.prevStep}
handleChange={this.handleChange}
values={values}
/>
);
case 3:
return <ThankYou />;
}
}
}