// eslint-disable-next-line no-lone-blocks
{/*
// 相关知识 结构赋值语法
// https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#%E5%9F%BA%E6%9C%AC%E8%B5%8B%E5%80%BC
// var o = {p: 42, q: true};
// var {p, q} = o;
//
// console.log(p); // 42
// console.log(q); // true
// 最原始的写法应该是这样的,!!!!!最完整的版本这么写
const mapStateToProps = (state) => {
// 从全局解构赋值出以下两个作用域的state
const {outpatientRegister, loading} = state
// 通过以下返回就能在props中获得errorsList和submitting两个参数,给组件使用
// 其中outpatientRegister是我们自己写的作用域下的state位于当前路径下的model.js中,其中的namespace就是我们所使用的 outpatientRegister
// 这个地方是固定用法,要想再model中state能传递给props,就必须把作用域名.state属性赋值给 props中希望获得属性名。如本例的errorsList
return {
errorsList: outpatientRegister.errorsObj, // 这个地方如果outpatientRegister作用域下的errorsObj改名为errorsList,则还可以触发解构赋值,那就可以简写为 {}
submitting: loading.effects['outpatientRegister/submitRegisterForm']
}
}
export default connect(mapStateToProps)(BasicForm);
*/}
// eslint-disable-next-line no-lone-blocks
{/*
// !!!对完整版本进行简化。 进行简写的话,直接把mapStateToProps这个函数省略,直接把函数写为如下代码
export default connect((state) => {
const {outpatientRegister, loading} = state
return {
errorsList: outpatientRegister.errorsObj,
submitting: loading.effects['outpatientRegister/submitRegisterForm']
}
})(BasicForm);
// !!!!再简化 又因为在此出只用到{outpatientRegister, loading}两个作用域下的state
// 所有参数中的state也省略掉,直接结构赋值,则又如下代码
export default connect(({outpatientRegister, loading}) => {
return {
errorsList: outpatientRegister.errorsObj,
submitting: loading.effects['outpatientRegister/submitRegisterForm']
}
})(BasicForm);
// !!!!!!!!!!!!!再简化
//又由于只返回了一个对象,相当于只有一句,则可以省略return和{} 写为如下写法
// 之所以要在返回的对象外面加小括号是因为如果直接写{}会被当作是语句块的括号,所以必须写()
export default connect(({outpatientRegister, loading}) => ({
errorsList: outpatientRegister.errorsObj,
submitting: loading.effects['outpatientRegister/submitRegisterForm']
})
)(BasicForm);
*/}
// 简写版本
export default connect(({outpatientRegister, loading}) => ({
errorsList: outpatientRegister.errorsObj,
submitting: loading.effects['outpatientRegister/submitRegisterForm'],
})
)(BasicForm);