The*_*ski 2 javascript reactjs webpack redux react-redux
我正在使用 Redux 和函数构建一个 React 应用程序mapDispatchToProps- 我正在使用下面的模式。
const mapDispatchToProps = (dispatch) => {
debugger
Object.keys(actions).forEach(key => {
var functionObj = actions[key];
actions[key] = () => {
debugger
var zz = Array.prototype.slice.call(arguments);
dispatch(functionObj.apply(null,zz));
}
});
return actions;
}
Run Code Online (Sandbox Code Playgroud)
让我抓狂的是,参数对象正是我所期望的(带有参数 bla bla 的类似数组的对象),除非我以任何方式“使用”它。我所说的“使用”是指:
将其分配给某些东西(如上var zz)或将其传递给函数。当我“使用”参数对象时 - 它神奇地变成了我当前所在的当前 Webpack 模块。
有人对这个有了解吗?我疯了吗??
这是由于箭头函数不提供arguments对象造成的。因此,您正在引用模块包装函数,它是最接近的非箭头函数。
您可以使用剩余参数来解决此问题。骑得好!其余参数是一个真正的数组,不需要用任何Array#slice()废话进行转换。
下面是一个示例,其中我还使用了扩展运算符来避免使用Function#apply(),因为您似乎不需要任何特殊this值。
const mapDispatchToProps = (dispatch) => {
debugger
Object.keys(actions).forEach(key => {
var functionObj = actions[key];
actions[key] = (...zz) => {
debugger
dispatch(functionObj(...zz));
}
});
return actions;
}
Run Code Online (Sandbox Code Playgroud)