javascript - 如何传递道具以获得取消按钮以在 Redux-Form 上的 React 中工作
问题描述
我Redux-Form
在这个React
组件中有这个,我有一个Cancel
按钮,我想onClick
在父组件中使用表单时传递一个事件。这是我的代码Redux-Form
。
import "./styles/list-item.scss";
import {Button, ButtonToolbar} from "react-bootstrap";
import {Field, reduxForm} from "redux-form";
import InputField from "../form-fields/InputField";
import PropsTypes from "prop-types";
import React from "react";
const AddInitiativeForm = (props) => {
const {handleSubmit, pristine, submitting} = props;
return (
<form onSubmit={handleSubmit}>
<div>
<div className="form-field">
<Field
component={InputField}
label="Initiative name"
name="initiative_name"
type="text"
/>
</div>
<div className="form-field">
<Field
component={InputField}
componentClass="textarea"
label="Description"
name="initiative_description"
rows="5"
type="text"
/>
<Field
component={InputField}
label="Tags"
name="initiative_tags"
type="text"
/>
</div>
<div className="form-button-group">
<ButtonToolbar>
<Button
bsSize="small"
style={{"width": "48%"}}
type="button"
onClick={() => {}}
>
Cancel
</Button>
<Button
bsSize="small"
disabled={pristine || submitting}
style={
{
"backgroundColor": "#999",
"width": "48%"
}}
type="submit"
>
Add
</Button>
</ButtonToolbar>
</div>
</div>
</form>
);
};
AddInitiativeForm.propTypes = {
"handleSubmit": PropsTypes.func.isRequired,
"pristine": PropsTypes.bool.isRequired,
"submitting": PropsTypes.bool.isRequired
};
AddInitiativeForm.defaultProps = {};
export default reduxForm({form: "addInitiative"})(AddInitiativeForm);
现在我在父组件中使用此表单,无法弄清楚如何onClick
在表单上调用该函数。这是我的代码。
import {CommonComponents} from "../../common";
import React from "react";
const {
AddInitiativeForm
} = CommonComponents;
class InitiativeContainer extends React.Component {
constructor(props) {
super(props);
this.state = {
"displayForm": false
};
}
handleCancelClick = () => {
this.setState((prevState) => ({"displayForm": !prevState.displayForm}));
}
onSubmit = (values) => {
"data": {
"attributes": {
"description": values.initiative_description,
"end-date": new Date(),
"start-date": new Date(),
"tags": [values.initiative_tags],
"title": values.initiative_name
},
"type": "initiatives"
}
}
render() {
const { displayForm } = this.state;
return (
<AddInitiativeForm
displaySearch={false}
onSubmit={this.onSubmit}
/>
);
}
}
解决方案
handleCancelClick
通过道具将您的方法传递给您的表单。然后在您的表单中,将其连接到按钮的onClick
:
// AddInitiativeForm
<Button
bsSize="small"
style={{ width: "48%" }}
type="button"
onClick={this.props.onCancel}
>
Cancel
</Button>;
// InitiativeContainer
render() {
const { displayForm } = this.state;
return (
<AddInitiativeForm
displaySearch={false}
onSubmit={this.onSubmit}
onCancel={this.handleCancelClick}
/>
);
}
推荐阅读
- android - 是否可以在 Android 的 BottomSheet 顶部显示一个栏
- firebase - Firebase:实时观察电子邮件验证状态
- python - python错误:需要一个整数
- c# - 将 DataGridView 导出到 excel 时遇到问题,接收 Com 错误
- maven - GWT 超级开发模式不编译最新源
- android - 'void android.view.inputmethod.InputConnection.closeConnection()' 上的 NullPointerException
- android - 获取选项卡式活动中当前选项卡的编号
- hana - 无法转换固定类型列 QUANTITY。达到最大固定类型精度
- c# - 使用 Asp.net C# 动态设置进度条样式值
- r - R - Spotify API - 延迟