0

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

谢谢。

4

1 回答 1

0

最简单最快的方法:

转到“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”。

于 2019-08-29T15:28:29.147 回答