glc*_*ham 8 javascript parameters ecmascript-6 reactjs react-redux
我正在使用es6对象解构来为函数提供默认参数.
function mapStateToProps({ shops: { cakeShop: {}, pieShop: {} }) {
return {
CakeShopName: shops.cakeShop.Name,
PieShopName: shops.pieShop.Name
}
}
Run Code Online (Sandbox Code Playgroud)
上面的问题是,如果我打电话
mapStateToProps({})
Run Code Online (Sandbox Code Playgroud)
代码抛出Cannot read property 'Name' of undefined
.嵌套对象shops
未设置为其默认值,并且代码具有空引用.
如何确保将嵌套对象shops
设置为正确的默认值,即使shops
自身已定义?
Ber*_*rgi 12
听起来像是在混淆默认值的混乱.您的语法会破坏参数对象,但实际上并不会引入任何参数标识符.shops
您的功能范围中没有变量.
我假设您实际上想要引入cakeShop
和pieShop
变量,并为它们提供默认值.要做到这一点,你要写
function mapStateToProps({ shops: { cakeShop = {}, pieShop = {} }) {
// short for { shops: { cakeShop: cakeShop = {}, pieShop: pieShop = {} }) {
// parameter names (that will be bound): ^^^^^^^^ ^^^^^^^
return {
CakeShopName: cakeShop.Name,
PieShopName: pieShop.Name
}
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用
function mapStateToProps({ shops: { cakeShop: {name: CakeShopName} = {}, pieShop: {name: PieShopName} = {} }) {
return {CakeShopName, PieShopName};
}
Run Code Online (Sandbox Code Playgroud)
要处理嵌套对象的默认值,它应该是
function mapStateToProps({ shops: { cakeShop = {}, pieShop = {} } = {} } = {}) {
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5652 次 |
最近记录: |