javascript - 如何将函数放在 return 之外,然后从 onChange react 中调用它?

标签 javascript reactjs frontend

我试图将我拥有的函数放在 return 语句之外 所以我可以从代码中的“onChange”调用该函数,这样我就不必在需要时一次又一次地重写它。我是 JS 新手,尝试时遇到了一些困难。我该如何解决这个问题?

    {
      name: "Lombard",
      prevgroupinputrate: 0.01,
      currgroupinputrate: 0.02,
      mktratedelta: 0.03,
      mktrateestimate: 0.04
    },
    {
      name: "Other Secured",
      prevgroupinputrate: 0.01,
      currgroupinputrate: 0.02,
      mktratedelta: 0.033,
      mktrateestimate: 0.04
    },
    {
      name: "Unsecured",
      prevgroupinputrate: 0.01,
      currgroupinputrate: 0.02,
      mktratedelta: 0.0333,
      mktrateestimate: 0.04
    }
  ]);

return (
    <>
      {marketEstimateDataBCAssets.map((item, key) => (
          <input
            value={item.mktratedelta}
            onChange={e => {
              const newArr = marketEstimateDataBCAssets.map(el => {
                if (el.name === item.name) {
                  return {
                    ...el,
                    mktratedelta: parseFloat(e.target.value),
                    mktrateestimate: (
                      parseFloat(e.target.value) + item.currgroupinputrate
                    ).toFixed(4)
                  };
                }
                return el;
              });

              return setmarketEstimateData([...newArr]);
            }}
          />
        </div>
      ))}
    </>
  );```

最佳答案

如您所见,onChange 属性接受一个函数,因此您可以在常量变量中设置此函数并将其传递给 onChange,如下所示:

const handleChange = (item) => e => {
    const newArr = marketEstimateDataBCAssets.map(el => {
        if (el.name === item.name) {
            return {
                ...el,
                mktratedelta: parseFloat(e.target.value),
                mktrateestimate: (
                    parseFloat(e.target.value) + item.currgroupinputrate
                ).toFixed(4)
            };
        }
        return el;
    });

    return setmarketEstimateData([...newArr]);
};

return (<>
        {marketEstimateDataBCAssets.map((item, key) => (
            <input
                key={key}
                value={item.mktratedelta}
                onChange={handleChange(item)}
            />
            < /div>
        ))}
    </>
)

关于javascript - 如何将函数放在 return 之外,然后从 onChange react 中调用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58752415/

相关文章:

javascript - JQuery 选项卡式内容 - SEO 友好的 URL

javascript - 着色/操作文本区域的部分

javascript - jQuery 属性名称选择器中的通配符?

javascript - 为什么 "typeof + ' '"returns '号'?

javascript - 镭错误 - 未知插件 "flow-comments"

javascript - 你将如何制作一个异步/等待函数来在 React 中显示一个对话框?

javascript - 使用 jquery 即时创建网格

javascript - 无法理解react组件中带有@符号的函数

html - 以下设计在技术上称为什么?如何在代码中实现?

javascript - 如何在对象内部和没有对象的情况下处理js前端中的后端错误