如何在 React 中提交表单并弹出模态以显示结果
How to submit a form and pop up a modal to display the result in React
我这里建了一个计算表作为linkhttps://codesandbox.io/s/calculation-form-uxip8?file=/src/components/Result.jsx
相反,在另一个页面上显示结果,我希望当用户单击“计算保存范围”按钮时,有一个弹出模式在同一页面上显示结果
我打算写Model.jsx
import React from "react";
import { NavLink } from "react-router-dom";
class ShowModal extends React.Component {
state = {
open: false,
};
onOpenModal = () => {
this.setState({ open: true });
};
onCloseModal = () => {
this.setState({ open: false });
};
render() {
const { open } = this.state;
return(
<div className="result">
<Modal open={open} onClose={this.onCloseModal}>
<h2>You could save between</h2>
<h1>{this.props.location.state.value} Annually</h1>
<NavLink to="/">Use Calculator Again</NavLink>
</Modal>
</div>)
有人可以过来给我一些建议吗?还有,如果我想写 model.jsx,如何将它 link 写入“计算保存范围”按钮? link另一个页面也是这样吗?谢谢!
将 ShowModal 组件放在计算器组件上,然后不要在计算按钮上使用 NavLink,而是使用它来更改模态框的状态以打开。
所以在你的 handleSubmit
handleSubmit = (event) => {
event.preventDefault();
const isValid = this.validate();
if (isValid) {
this.setState({ open: true, value: "$" +
Math.floor(1.69 * this.state.squareFootage * (10 / 100)) +
"- $" +
Math.floor(1.69 * this.state.squareFootage * (30 / 100)) });
}
};
确保为状态添加值,然后将该值作为道具传递给 ShowModal 组件。
<ShowModal open={this.state.open} value={this.state.value} onClose={this.onClose} />
你的模态组件应该看起来像这样,接受 3 个道具(如果你有任何东西要传递的话,可以接受更多)
我这里建了一个计算表作为linkhttps://codesandbox.io/s/calculation-form-uxip8?file=/src/components/Result.jsx
相反,在另一个页面上显示结果,我希望当用户单击“计算保存范围”按钮时,有一个弹出模式在同一页面上显示结果
我打算写Model.jsx
import React from "react";
import { NavLink } from "react-router-dom";
class ShowModal extends React.Component {
state = {
open: false,
};
onOpenModal = () => {
this.setState({ open: true });
};
onCloseModal = () => {
this.setState({ open: false });
};
render() {
const { open } = this.state;
return(
<div className="result">
<Modal open={open} onClose={this.onCloseModal}>
<h2>You could save between</h2>
<h1>{this.props.location.state.value} Annually</h1>
<NavLink to="/">Use Calculator Again</NavLink>
</Modal>
</div>)
有人可以过来给我一些建议吗?还有,如果我想写 model.jsx,如何将它 link 写入“计算保存范围”按钮? link另一个页面也是这样吗?谢谢!
将 ShowModal 组件放在计算器组件上,然后不要在计算按钮上使用 NavLink,而是使用它来更改模态框的状态以打开。 所以在你的 handleSubmit
handleSubmit = (event) => {
event.preventDefault();
const isValid = this.validate();
if (isValid) {
this.setState({ open: true, value: "$" +
Math.floor(1.69 * this.state.squareFootage * (10 / 100)) +
"- $" +
Math.floor(1.69 * this.state.squareFootage * (30 / 100)) });
}
};
确保为状态添加值,然后将该值作为道具传递给 ShowModal 组件。
<ShowModal open={this.state.open} value={this.state.value} onClose={this.onClose} />
你的模态组件应该看起来像这样,接受 3 个道具(如果你有任何东西要传递的话,可以接受更多)