以下代码有效;我没有收到任何错误,并且Web Storm的IDE也没有发现它。
然而,我一定错过了关于此的文件。
export default class WidgetContainer extends React.Component {
....
compListeners = [
{name: "collapseWidget", action: this._widgetCollapse.bind(this)},
{name: "goFullscreen", action: this._goFullScreen.bind(this)}
];
componentDidMount() {
this.compListeners.map(ev => {
window.addEventListener(ev.name, ev.action, false)
});
}
componentWillUnmount() {
this.compListeners.map(ev => {
window.removeEventListener(ev.name, ev.action, false)
});
}
....
}
这样做是否可以接受声明 compListeners 的做法?我节省了很多代码。
答案 0 :(得分:0)
声明一个对象数组的反应是完全可以接受的。你做了什么
compListeners = [
{name: "collapseWidget", action: this._widgetCollapse.bind(this)},
{name: "goFullscreen", action: this._goFullScreen.bind(this)}
];
是声明和具有名称和操作属性的对象数组。
使用window.addEventListener()
,您只是将数组中的参数传递给上面的函数,因此没有问题。