我的应用程序中有一个奇怪的错误。我想让用户通过redux形式更新组的名称。将旧名称与输入字段交换没有问题,但是当我点击提交时,则什么都不会发生。这对我来说很奇怪,因为我使用相同的表单来创建组,并且在那里工作完全正常。还原式未提交
import React, { Component } from 'react';
import { connect} from 'react-redux';
import { deleteAccessGroup, editAccessGroup } from '../actions/UserActions';
import { showModal } from '../actions/ModalActions';
import * as types from '../actions/index';
import AccessGroupCreation from '../components/AccessGroupCreation';
class AccessGroupElement extends Component {
constructor(props) {
super(props);
this.state = {
toggle: false
}
}
handleSubmit = values => {
this.props.editAccessGroup(values);
console.log(this.state, "Das sind die values: ", values);
this.edit;
console.log(this.state);
}
edit =() => this.setState({toggle: !this.state.toggle});
delAccessGroup =() => this.props.deleteAccessGroup(this.props.accessGroup.id);
showPicModal =() => {
let id = this.props.accessGroup.id;
this.props.showModal(types.MODAL_TYPE_PICUPLOAD, {
title: 'Please upload a Profile Picture',
onConfirm: (pic) => {
console.log(this.props.accessGroup.id);
console.log(pic)
}
});
}
render() {
const accessGroup=this.props.accessGroup;
return(
<div className="row" id="hoverDiv">
<div className="col-lg-1"></div>
{this.state.toggle ?
<div className="col-lg-9">
<AccessGroupCreation onSubmit={this.handleSubmit} />
</div> :
<div className="col-lg-9">{accessGroup.name}</div>}
<div className="col-lg-2">
<button type="button" onClick={this.delAccessGroup}
className="btn btn-default btn-sm pull-right">
<span className="glyphicon glyphicon-trash"></span>
</button>
<button type="button" onClick={this.edit}
className="btn btn-default btn-sm pull-right">
<span className="glyphicon glyphicon-pencil"></span>
</button>
</div>
</div>
);
}
}
export default connect(null, { deleteAccessGroup, editAccessGroup, showModal })(AccessGroupElement);
这里是表单组件:
import React from 'react';
import { Field, reduxForm } from 'redux-form';
const required = value => value ? undefined : 'Required';
const lengthFunction = (min, max) => value =>
value && (value.length > max || value.length < min) ? `Must be between ${min} and ${max} characters` : undefined
const length = lengthFunction(5, 20);
const renderField = ({ input, label, type, meta: { touched, error } }) => (
<div>
<input {...input} placeholder={label} type={type} className="form-control"/>
{touched && (error && <span>{error}</span>)}
</div>
);
const AccessGroupCreation = (props) => {
const { handleSubmit, pristine, submitting } = props;
return (
<form className="form-inline" onSubmit={handleSubmit}>
<div className="input-group">
<Field name="name" type="text"
component={renderField} label="Add an Access Group"
validate={[ required, length]}/>
<span className="input-group-btn">
<button className="btn btn-success" disabled={pristine || submitting}
value="this.state.value" type="submit">
<span className="glyphicon glyphicon-send"></span>
Submit
</button>
</span>
</div>
</form>
)
}
export default reduxForm({
form: 'AccessGroupCreationForm' // a unique identifier for this form
})(AccessGroupCreation)
帮助,一如既往,将是非常赞赏。
嗯,我改变了调用this.edit(),但它仍然无法正常工作。问题似乎是这个动作永远不会被解雇,因为我输入到该函数中的两个控制台日志从未出现在我的控制台中。这是有道理的,因为我不能提交表格。 – Gh05d