【发布时间】:2025-12-03 04:45:01
【问题描述】:
我在 react 中使用 redux 创建一个设置表单。我想动态创建表单,以便可以在后端添加任意数量的设置并显示在表单中。
我有使用如下地图生成的字段:
const inputs = arr.map((setting, key) => {
return <Field
type="textarea"
name={setting.setting_id}
id={setting.setting_id}
component={renderField}
placeholder={setting.value}
/>
在我的应用程序的其他部分,我使用了 'this.props.initialize({ nameOfField: value});'设置 redux 表单的初始值。但是,由于这些事先不知道,我尝试了
settings.map((setting, key) => {
this.props.initialize({
[setting.setting_id]: setting.value
});
});
这不起作用,因为每次调用它时它都会覆盖以前的值,只留下数组中的最后一个设置具有正确的值集。
有没有办法一次收集我的所有设置并在 props.initialize 函数中调用它们,或者有更好的方法来初始化所有字段?
编辑:使用减速器代码
let SettingsForms = connect(state => ({
settings: state.settings.settings || [],
getSettingsLoading: state.settings.getSettingsLoading || false,
}),
dispatch => ({
getSettings: () => dispatch(getSettings()),
updateSettings: (data) => dispatch(updateSettings(data))
}))(Settings);
export default reduxForm({
form: "settingsForm",
})(SettingsForms);
【问题讨论】:
-
您能否包含您的 reducer 的代码,显示设置如何合并到应用程序的状态中?
-
已更新代码谢谢
-
谢谢 - 这看起来像是将您的 SettingsForms 连接到商店的代码。 reducer 通常会包含一个 switch/case 块。你能包括那个吗?能否也包含
updateSettings()的代码?
标签: javascript reactjs react-redux