【问题标题】:monkey patching a function used in formsy-react library猴子修补formsy-react库中使用的函数
【发布时间】:2019-08-29 15:00:14
【问题描述】:

我使用 formsy-react v1.1.5 进行验证,我有大约 100 个输入字段,而且由于代码中不必要的 object.assign 函数,它的速度慢得令人难以置信。我知道更高版本已修复此问题,但我现在无法更新。

我完全不知道猴子补丁,我不想使用任何补丁库来完成工作。我想了解如何修补它。

这段代码:

getCurrentValues = () => (
 this.inputs.reduce((data, component) => {
   const { name } = component.props;
   const dataCopy = Object.assign({}, data); // avoid param reassignment
  dataCopy[name] = component.state.value;
  return dataCopy;
 }, {})
)

 getPristineValues = () => (
  this.inputs.reduce((data, component) => {
    const { name } = component.props;
    const dataCopy = Object.assign({}, data); // avoid param reassignment
   dataCopy[name] = component.props.value;
  return dataCopy;
 }, {})
)

我想进行以下更改:

getCurrentValues = () => (
this.inputs.reduce((data, component) => {
  const { name } = component.props;
  data[name] = component.state.value;
  return data;
}, {})
)

  getPristineValues = () => (
this.inputs.reduce((data, component) => {
  const { name } = component.props;
  data[name] = component.props.value;
  return data;
}, {})
)

谢谢。

【问题讨论】:

    标签: node.js reactjs npm npm-install formsy-react


    【解决方案1】:

    最简单最快的方法:

    进入“node_modules/formsy-react/lib”,打开你要打补丁的文件,修改并保存。

    下次执行时,会使用修改后的文件。

    唯一的问题是每次在每台计算机上执行 npm install 时都需要再次执行此操作。

    更好的方法是创建一个 .js 文件并修补文件,在 package.json 中创建一个脚本,将其复制到正确的位置,并在 README 中添加一个提醒,您需要在执行 npm install 后执行该脚本。

    可能是这样的:

      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "node index.js",
        "patch": "mv patchedFile.js ./node_modules/formsy-react/lib/{fileName}.js"
      },
    

    在项目根目录中被 patchedFile.js 与修改后的 {fileName}.js 内容相同。

    然后在“npm install”之后执行“npm run patch”。

    【讨论】:

    • 感谢您的回复。我仍然想念一些信息来让它工作。您能告诉我如何在 package.json 中创建一个脚本来移动或复制文件以及如何执行该脚本吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 2015-03-26
    • 2012-03-13
    • 2013-12-26
    • 2012-06-14
    • 2012-03-29
    相关资源
    最近更新 更多