Javascript 更新表单时,initialValues不会得到更新
我有一个名为Javascript 更新表单时,initialValues不会得到更新,javascript,reactjs,redux,redux-form,Javascript,Reactjs,Redux,Redux Form,我有一个名为Client的表单,它有一个表单,可以处理add和edit。“添加”正在工作,但在编辑表单时(表单 使用initialValues填充(如果是和编辑表单),initialValues不会得到更新。我的意思是,如果我去客户那里更新表格 名为client_name的字段从'abc'到'xyz',则客户端名称将在服务器中保存为'xyz',但初始值不会得到更新 因此,如果我再次转到相同的表单而不刷新页面并保存表单而不更改任何内容,则客户端名称将与上一页一起保存 价值一abc'因为更新字段时不
Client
的表单,它有一个表单,可以处理add
和edit
。“添加”正在工作,但在编辑表单时(表单
使用initialValues填充(如果是和编辑表单),initialValues不会得到更新。我的意思是,如果我去客户那里更新表格
名为client_name
的字段从'abc'到'xyz',则客户端名称将在服务器中保存为'xyz',但初始值不会得到更新
因此,如果我再次转到相同的表单而不刷新页面并保存表单而不更改任何内容,则客户端名称
将与上一页一起保存
价值一abc'因为更新字段时不会更新初始值
这是我的密码
import React, { Component } from 'react';
import { reduxForm, initialize } from 'redux-form';
const mapDispatchToProps = (dispatch, props) => ({
addClient: clientData => dispatch(addClient(clientData)),
editClient: clientData => dispatch(editClient(clientData)),
loadClient: () => dispatch(loadClient(props.match.params.company)),
resetClient: () => dispatch(resetClient()),
});
const mapStateToProps = createStructuredSelector({
initialValues: selectClient(),
});
class Client extends Component<propsCheck> {
state = {
client: initialState,
isLoading: false,
};
componentDidMount() {
if (this.props.match.params.company) {
this.props.loadClient();
}
}
componentWillReceiveProps(nextProps) {
if (this.props.match.params.company) {
this.props.loadClient();
} else {
this.props.resetClient();
}
}
handleChange = ({ target: { name, value } }) => {
this.setState({ client: { ...this.state.client, [name]: value } });
};
handleSubmit = event => {
event.preventDefault();
const { client } = this.state;
const { initialValues, addClient: add, editClient: edit } = this.props;
if (isEmpty(initialValues)) {
add(client);
} else {
const updatedClient = updatedValue(initialValues, client, 'id');
edit(updatedClient);
}
this.setState({ isLoading: true });
};
render() {
const { invalid, submitting, initialValues } = this.props;
return (
<ClientForm
loading={this.state.isLoading}
handleChange={this.handleChange}
handleSubmit={this.handleSubmit}
disabled={invalid || submitting}
type={initialValues && initialValues.id ? 'Edit' : 'Add'}
reset={this.props.reset}
history={this.props.history}
/>
);
}
}
const withReduxForm = reduxForm({
form: 'clientForm',
fields: requiredFields,
validate,
enableReinitialize: true,
})(Client);
export default connect(
mapStateToProps,
mapDispatchToProps,
)(withReduxForm);
import React,{Component}来自'React';
从“redux form”导入{reduxForm,initialize};
const mapDispatchToProps=(调度,道具)=>({
addClient:clientData=>dispatch(addClient(clientData)),
editClient:clientData=>dispatch(editClient(clientData)),
loadClient:()=>调度(loadClient(props.match.params.company)),
resetClient:()=>调度(resetClient()),
});
const mapStateToProps=createStructuredSelector({
initialValues:selectClient(),
});
类客户端扩展组件{
状态={
客户:initialState,
孤岛加载:false,
};
componentDidMount(){
if(此.props.match.params.company){
this.props.loadClient();
}
}
组件将接收道具(下一步){
if(此.props.match.params.company){
this.props.loadClient();
}否则{
this.props.resetClient();
}
}
handleChange=({target:{name,value}})=>{
this.setState({client:{…this.state.client,[name]:value});
};
handleSubmit=事件=>{
event.preventDefault();
const{client}=this.state;
const{initialValues,addClient:add,editClient:edit}=this.props;
if(isEmpty(初始值)){
添加(客户);
}否则{
const updatedClient=updatedValue(initialValues,client,'id');
编辑(更新客户端);
}
this.setState({isLoading:true});
};
render(){
const{invalid,submiting,initialValues}=this.props;
返回(
);
}
}
常数withReduxForm=reduxForm({
表格:'clientForm',
字段:必填字段,
验证
enableReinitialize:true,
})(客户);
导出默认连接(
MapStateTops,
mapDispatchToProps,
)(带ReduxForm);
您的初始值是从redux状态(MapStateTops中的selectClient)填充的,对吗?因此,当您更新/编辑客户端名称时,您是否正在更改redux中的数据???您的初始值是从redux状态(在MapStateTops中选择client)填充的,对吗?因此,当您更新/编辑客户端名称时,您是否正在更改redux中的数据??是的,初始值是从redux状态填充的。非常感谢我忘记了reducer中的EDIT_客户端。我可以将注释移动到answers,您介意将其标记为答案吗?是的,当然。我应该尊重你的时间、考虑和帮助。