Прежде всего, чтобы ответить на вопрос о стандарте Map
: Javascript Map
, предложенный в ECMAScript 2015, не включает установщик для значений по умолчанию. Это, однако, не мешает вам реализовать эту функцию самостоятельно.
Если вы просто хотите распечатать список, всякий раз, когда m [whatever] не определено, вы можете просто: console.log(m.get('whatever') || []);
, как указано Li357 в его комментарии.
Если вы хотите для повторного использования этой функции вы также можете инкапсулировать ее в такую функцию, как:
function getMapValue(map, key) {
return map.get(key) || [];
}
// And use it like:
const m = new Map();
console.log(getMapValue(m, 'whatever'));
Если это, однако, не удовлетворяет вашим потребностям и вы действительно хотите, чтобы карта имела значение по умолчанию, вы можете написать свой собственный класс карты для него, например:
class MapWithDefault extends Map {
get(key) {
return super.get(key) || this.default;
}
constructor(defaultValue) {
super();
this.default = defaultValue;
}
}
// And use it like:
const m = new MapWithDefault([]);
console.log(m.get('whatever'));
Ниже приведен пример из https://reactstrap.github.io/components/navbar/
, который использует реагирующий ремень, но может помочь вам понять, как это сделать в реакции [ 113]
import React from 'react';
import { Collapse, Navbar, NavbarToggler, NavbarBrand, Nav, NavItem, NavLink } from 'reactstrap';
export default class Example extends React.Component {
constructor(props) {
super(props);
this.toggleNavbar = this.toggleNavbar.bind(this);
this.state = {
collapsed: true
};
}
toggleNavbar() {
this.setState({
collapsed: !this.state.collapsed
});
}
render() {
return (
<div>
<Navbar color="faded" light>
<NavbarBrand href="/" className="mr-auto">reactstrap</NavbarBrand>
<NavbarToggler onClick={this.toggleNavbar} className="mr-2" />
<Collapse isOpen={!this.state.collapsed} navbar>
<Nav navbar>
<NavItem>
<NavLink href="/components/">Components</NavLink>
</NavItem>
<NavItem>
<NavLink href="https://github.com/reactstrap/reactstrap">GitHub</NavLink>
</NavItem>
</Nav>
</Collapse>
</Navbar>
</div>
);
}
}