gpt4 book ai didi

javascript - 更新表单时initialValues没有得到更新

转载 作者:行者123 更新时间:2023-12-03 00:37:18 25 4
gpt4 key购买 nike

我有一个名为 Client 的表单,它有一个处理 addedit 的表单。添加正在工作,但是在编辑表单时(表单如果是并且编辑表单,则填充初始值),初始值不会得到更新。我的意思是,如果我转到客户 A 表格并更新名为 client_name 的字段从 'abc' 到 'xyz' 那么 client_name 将在服务器中保存为 'xyz' 但初始值不会更新因此,如果我再次转到相同的表单而不刷新页面并保存表单而不更改任何内容,则 client_name 将与之前的内容一起保存值(value)岛'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);

最佳答案

您的初始值是从 redux 状态(mapStateToProps 中的 selectClient)填充的,对吧?那么,当您更新/编辑 client_name 时,您是否更改了 redux 中的数据?

关于javascript - 更新表单时initialValues没有得到更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53608550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com