javascript - 如何动态更改函数的名称

标签 javascript reactjs

我有一个函数,在调用我的 api 之前充当某种焦点。

我想通过简化 if 语句来减少一点膨胀。

目前我有一个声明列表。其中 2 个如下所示

    if (this.props.source === 1) {
      api.updateData01(id, data).then(res => {
        this.hideModal()
        this.props.updateData01()
        console.log('DATA UPDATED')
      })
    }
    if (this.props.source === 2) {
      api.updateData02(id, data).then(res => {
        this.hideModal()
        this.props.updateData02()
        console.log('DATA UPDATED')
      })
    }

我想通过提出 if 语句来简化它,而不是动态重命名函数。

类似的东西

    if(this.props.source === 1){
      //rename updateData to updateData01
    }
    if(this.props.source === 2){
      //rename updateData to updateData02
    }

    api.updateData01(id, data).then(res => {
      this.hideModal()
      this.props.updateData01()
      console.log('DATA UPDATED')
    })

我以前从未需要重命名函数,所以我不确定如何开始。

我尝试过类似的事情,但显然行不通。

   if(this.props.source === 1){
      const dataSource = 01
    }
   api.updateData + datasource + (.....

最佳答案

您可以使用 dynamic property names 而不是重命名函数根据哈希值访问正确的函数 (api)

const api = {
    updateData01 : () =>{},
    updateData02 : () =>{},
    /*...*/
    updateData0N : () =>{}
}

api[`updateData0${this.props.source}`]().then(/*...*/)

关于javascript - 如何动态更改函数的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58396103/

相关文章:

javascript - 如何为移动浏览器添加 pdf 查看器到网站

javascript - 将 HTML 参数传递给 php 页面

reactjs - typescript 错误 : TS2339: Property 'span' does not exist on type 'JSX.IntrinsicElements'

javascript - Normalizr - 未达到预期结果

reactjs - 从 API React 映射对象数组

javascript - Uncaught Error : Invalid value in 0, 0

javascript - 自定义数字输入

javascript - 为什么当函数返回false时表单仍然可以提交?

javascript - 如何在 React 中分离多个进度百分比

javascript - 如何在 React 应用中处理多个环境