React - 使用 reduxForm 的两个语句之间的区别
React - Difference between two statements with reduxForm
我检查了带有初始化值的reduxForm的示例代码,他们的代码和我的代码之间的唯一区别是以下代码块..
我的代码 (不适用于初始值)
function mapStateToProps(state) {
return{
initialValues: state.account.data
};
}
export default reduxForm({
form:'initializeFromState'
})(connect(mapStateToProps,{load: loadAccount})(InitializeFromStateForm));
他们的代码 (使用 InitialValues) Taken from here
InitializeFromStateForm = reduxForm({
form: 'initializeFromState', // a unique identifier for this form
})(InitializeFromStateForm);
// You have to connect() to any reducers that you wish to connect to yourself
InitializeFromStateForm = connect(
state => ({
initialValues: state.account.data, // pull initial values from account reducer
}),
{ load: loadAccount }, // bind account loading action creator
)(InitializeFromStateForm);
export default InitializeFromStateForm;
我用我的更改了他们的 connect() 和 reduxForm 代码,有趣的是 initialValues 停止工作了,现在我的问题是 这两个代码是否不同? 如果不同 我的代码有什么问题?
谢谢。
是的,略有不同,您先用 connect
包裹组件,然后用 ReduxForm
包裹组件,但应该反过来
将您的代码更改为
export default connect(mapStateToProps,{load: loadAccount})(reduxForm({
form:'initializeFromState'
})(InitializeFromStateForm));
它应该可以工作
区别在于 react-redux 连接 HoC 和 redux-form HoC 相互包装的顺序。
在您的代码中,redux-form 包装了 connect HoC,并且 initialValues
没有传递给表单,而是传递给了内部组件。表单使用值初始化,内部组件(您的)忽略它们。
道具流程:redux-form -> connect - initialValues -> component
在他们的代码中,connect 包装了 redux-form,并且 initialValues
作为 redux-form HoC(表单)传递。使用值初始化表单。
道具流:连接 - initialValues -> redux-form -> 组件
我检查了带有初始化值的reduxForm的示例代码,他们的代码和我的代码之间的唯一区别是以下代码块..
我的代码 (不适用于初始值)
function mapStateToProps(state) {
return{
initialValues: state.account.data
};
}
export default reduxForm({
form:'initializeFromState'
})(connect(mapStateToProps,{load: loadAccount})(InitializeFromStateForm));
他们的代码 (使用 InitialValues) Taken from here
InitializeFromStateForm = reduxForm({
form: 'initializeFromState', // a unique identifier for this form
})(InitializeFromStateForm);
// You have to connect() to any reducers that you wish to connect to yourself
InitializeFromStateForm = connect(
state => ({
initialValues: state.account.data, // pull initial values from account reducer
}),
{ load: loadAccount }, // bind account loading action creator
)(InitializeFromStateForm);
export default InitializeFromStateForm;
我用我的更改了他们的 connect() 和 reduxForm 代码,有趣的是 initialValues 停止工作了,现在我的问题是 这两个代码是否不同? 如果不同 我的代码有什么问题?
谢谢。
是的,略有不同,您先用 connect
包裹组件,然后用 ReduxForm
包裹组件,但应该反过来
将您的代码更改为
export default connect(mapStateToProps,{load: loadAccount})(reduxForm({
form:'initializeFromState'
})(InitializeFromStateForm));
它应该可以工作
区别在于 react-redux 连接 HoC 和 redux-form HoC 相互包装的顺序。
在您的代码中,redux-form 包装了 connect HoC,并且 initialValues
没有传递给表单,而是传递给了内部组件。表单使用值初始化,内部组件(您的)忽略它们。
道具流程:redux-form -> connect - initialValues -> component
在他们的代码中,connect 包装了 redux-form,并且 initialValues
作为 redux-form HoC(表单)传递。使用值初始化表单。
道具流:连接 - initialValues -> redux-form -> 组件