猴子修补formy-react库中使用的函数

时间:2019-08-29 15:00:14

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

我使用formy-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;
}, {})
)

谢谢。

1 个答案:

答案 0 :(得分:0)

最简单,最快的方法:

转到“ node_modules / formsy-react / lib”,打开要修补的文件,进行更改并保存。

下次执行它时,它将使用更改后的文件。

唯一的问题是,每次在每台计算机上进行npm安装时,都需要重新做一次。

一种更好的方法是创建一个打补丁的文件.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”。