Через query string надо получить объект/state из другой страницы
Есть 2 сайта на реакте Order и burger. На странице order есть форма заполнения данных для доставки, а на странице burger есть конструктор бургера и при нажатии на кнопку "Заказать" надо вывести в консольке данные со state
state = {
fio: "",
email: "",
FormCheck: true,
address: "",
success: true,
};
onRedirect = (event, path) => {
event.preventDefault();
this.props.history.push(path);
};
inputChangeHandler = (event) => {
this.setState({ [event.target.name]: event.target.value });
};
render() {
return (
<Container>
<Row>
<Col xs={4}>
<Form>
<Form.Group className="mb-3" controlId="validationCustom01">
<Form.Label>Ваше Имя</Form.Label>
<Form.Control
type="text"
name="fio"
placeholder="Введите ваше Имя"
value={this.state.fio}
onChange={this.inputChangeHandler}
required
/>
</Form.Group>
<Form.Group className="mb-3" controlId="formBasicEmail">
<Form.Label>Ваш емайл</Form.Label>
<Form.Control
type="email"
name="email"
placeholder="Введите почту"
value={this.state.email}
onChange={this.inputChangeHandler}
required
/>
</Form.Group>
<Form.Group className="mb-3" controlId="formBasicCheckbox">
<Form.Check
type="checkbox"
label="С доставкой"
value={this.state.success}
onChange={this.inputChangeHandler}
required
/>
</Form.Group>
<Form.Group className="mb-3" controlId="formGridAddress1">
<Form.Label>Адрес</Form.Label>
<Form.Control
placeholder="Ваш Адрес"
name="address"
value={this.state.address}
onChange={this.inputChangeHandler}
required
/>
</Form.Group>
<Button
variant="primary"
type="submit"
onClick={(e) => this.onRedirect(e, "/burger")}
>
Submit
</Button>
</Form>
</Col>
</Row>
</Container>
);
}
}
export default Order;```
export default class Burger extends Component {
state = {
lettuce: 0,
tomato: 0,
cheese: 0,
meat: 0,
};
addRemoveIngredient = (action, ingredient) => {
let { lettuce, tomato, cheese, meat } = this.state;
let stateValue;
switch (ingredient) {
case "lettuce": {
stateValue = lettuce;
break;
}
case "tomato": {
stateValue = tomato;
break;
}
case "cheese": {
stateValue = cheese;
break;
}
case "meat": {
stateValue = meat;
break;
}
default:
break;
}
if (action === "add") {
stateValue = stateValue + 1;
} else {
stateValue = stateValue - 1;
}
this.setState({
[ingredient]: stateValue >= 0 ? stateValue : 0,
});
};
burgerContent = () => {
let { lettuce, tomato, cheese, meat } = this.state;
let burger = [];
// outputting the lettuce
for (let i = 0; i < lettuce; i++) {
burger.push(<div key={burger.length} className="lettuseSide"></div>);
}
// outputting the tomato
for (let i = 0; i < tomato; i++) {
burger.push(<div key={burger.length} className="tomatoSide"></div>);
}
// outputting the cheese
for (let i = 0; i < cheese; i++) {
burger.push(<div key={burger.length} className="cheeseSide"></div>);
}
// outputting the meat
for (let i = 0; i < meat; i++) {
burger.push(<div key={burger.length} className="meatSide"></div>);
}
if (burger.length === 0)
burger.push(<p key="0">Please start adding ingredients!</p>);
return burger;
};
render() {
return (
<>
<div className="burgerIngredients">
<div className="topSide"></div>
{this.burgerContent()}
<div className="bottomSide"></div>
</div>
<div className="ingredientsBlock">
<p>Lettuce</p>
<div className="ingrBtns">
<button
className="ingrBtn"
onClick={() => this.addRemoveIngredient("add", "lettuce")}
>
Add
</button>
<p className="brgrPrice">{this.state.lettuce}</p>
<button
className="ingrBtn"
onClick={() => this.addRemoveIngredient("remove", "lettuce")}
>
Remove
</button>
</div>
<p>TOMATO</p>
<div className="ingrBtns">
<button
className="ingrBtn"
onClick={() => this.addRemoveIngredient("add", "tomato")}
>
Add
</button>
<p className="brgrPrice">{this.state.tomato}</p>
<button
className="ingrBtn"
onClick={() => this.addRemoveIngredient("remove", "tomato")}
>
Remove
</button>
</div>
<p>CHEESE</p>
<div className="ingrBtns">
<button
className="ingrBtn"
onClick={() => this.addRemoveIngredient("add", "cheese")}
>
Add
</button>
<p className="brgrPrice">{this.state.cheese}</p>
<button
className="ingrBtn"
onClick={() => this.addRemoveIngredient("remove", "cheese")}
>
Remove
</button>
</div>
<p>MEAT</p>
<div className="ingrBtns">
<button
className="ingrBtn"
onClick={() => this.addRemoveIngredient("add", "meat")}
>
Add
</button>
<p className="brgrPrice">{this.state.meat}</p>
<button
className="ingrBtn"
onClick={() => this.addRemoveIngredient("remove", "meat")}
>
Remove
</button>
</div>
<Button variant="primary" size="lg">
Заказать
</Button>
</div>
</>
);
}
}
```