微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建一个类似于react readux中如何使用dispatch的柯里化函数

如何解决如何创建一个类似于react readux中如何使用dispatch的柯里化函数

我需要先说明以下代码只是为了便于演示的简单代码。但我正在尝试在纯 js(无反应)中创建一个柯里化函数(或者至少我认为这就是它的名字)类似于 react/redux 如何使用这样的调度:

const action = (val) => (dispatch) => {
  // The function can Now use val and dispatch
}

我将多个函数传递给一个关联函数,该函数添加一个状态值和一个 setState 值,我希望能够像这样使用该函数

const action = (val) => (state,setState) => {
  // the function can Now use val,state,and setState
}

action('foo');

关联函数目前如下所示:

const action1 = (val) => {
  setState(val);
};

const action2 = (val) => {
  setState(val);
};

const associateActions = (actions) => {
  const associated = {};
  Object.keys(actions).forEach((key) => {
    associated[key] = function (...args) {
      actions[key](...args,setState);
    };
  });
  return associated;
};

const associatedActions = associateActions({ action1,action2 });

但我希望能够将 state 和 setState 传递给这样的操作:

const action1 = (val) => (state,setState) => {
  setState(val);
};

const action2 = (val) => (state,setState) => {
  setState(val);
};

我可以轻松地将 state 和 setState 函数添加到最后,就像 (...args,setState) 一样,但似乎将它们附加到最后会让人感到困惑,所以我想弄清楚如何编写它们在拖尾柯里化函数中,但我无法弄清楚如何这样做。

这是一个Fiddle Demo 一起玩的 jsfiddle

任何帮助将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。