当前位置: 首页 > 知识库问答 >
问题:

如何在javascript/JS中导出函数并使其可重用

孔睿
2023-03-14

我有一段代码,我几乎在我所有的组件中都使用它,并且工作得非常好,但是我想让它可以重用。

我尝试将它导出到另一个文件中,然后导入并传递函数的参数,但没有成功。

searchTerm只是一个输入,我将状态设置为输入的值。

const data = [
  {
    name: "User"
    email: "user@email.com"
    phone: 0000000
    gender: "male"
    notes: "some notes"
    birthday: "00/00/0000"
  }
]

我所拥有并想要重复使用的:

let filteredData = []

if (clients.length > 0) {
  filteredData =
    data.filter(d=> Object.values(d).join(' 
    ').toLowerCase().match(searchTerm.toLowerCase()))
}

我尝试的是:

export function tableFilter(data, searchTerm) {
  if (data.length > 0) {
    return data.filter(d => Object.values(d).join(' 
    ').toLowerCase().match(searchTerm.toLowerCase()))
  }
}

预期的结果是在所有组件中使用该函数而不重写它。我现在得到的是根本没有数据

共有2个答案

太叔天宇
2023-03-14

为什么不在根组件中创建函数并将其传递给使用该功能的所有子组件呢。

class App extends React.Component {
  tableFilter(data, searchTerm) {
      if (data.length > 0) {
         return data.filter(d => Object.values(d).join('')
                                            .toLowerCase()
                                            .match(searchTerm.toLowerCase()))
       }
  }
  render() {
    return (<div>
             <Child1 myfilter={this.tableFilter} />
             <Child2 myfilter={this.tableFilter} />
             <Child3 myfilter={this.tableFilter} />
             <Child4 myfilter={this.tableFilter} />
             ...
           </div>);
  }
}
仲孙思源
2023-03-14

解决方法很简单:

export function tableFilter(data, searchTerm) {
  let filteredData = []
  // the if check is not necessary 
  if (data.length > 0) {
    filteredData = data.filter(d => Object.values(d).join(' 
    ').toLowerCase().match(searchTerm.toLowerCase()))
  }
  return filteredData
}
 类似资料:
  • 我正在尝试将钩子{count,setCount}=useState(0)导出到另一个函数,以便能够获取{count}值。我的应用程序是通过添加项目来制作一个简单的清单,然后当按下提交按钮时,获取该清单的渲染。 以下是我的库存对象列表: 最好的方法是将我的钩子移动到应用程序函数中,但是增加或减少{计数}会影响我的所有项目。 在运行函数displayOrder时,是否仍要为每个项呈现{count}?

  • 问题内容: 输入完成后,我会正确获得信用卡信息,我调用了一个函数来验证使用luhn模块的信用卡(npm install luhn),因为我使用的是: 未捕获的ReferenceError:未定义require 很抱歉,如果这是一个简单的问题,但由于找不到npm打包用法的逻辑短解决方案。我称这个时间功能。 再次相同的错误。 因此在js中,必须有使用npm模块的简单方法。但是我找不到。请我需要帮助。

  • 我是mongodb新手,所以需要一些帮助,用NodeJs导出和导入mongodb数据。我有一个mongodb数据库和一些集合(如产品集合、公式集合和规则集合,其中有产品id引用),我想根据api请求的参数导出不同集合中的数据,并生成包含相应数据的文件,该文件将在客户端浏览器上下载。用户可以使用导出的文件将导出的数据导入到另一个数据库实例中。我已经搜索了这个主题,并得到了这个答案,我不确定是否可以使

  • 问题内容: 我不知道如何在JavaScript中使用多个ID。单个ID和getElementById没问题,但是一旦我将ID更改为class并尝试使用getElementsByClassName,该函数就会停止工作。我已经读了约100条关于该主题的文章;仍然没有找到答案,所以我希望这里的人知道如何使getElementsByClassName工作。 这是我用于测试的一些简单代码: 问题答案: 返回

  • 所以我创建了一个电影数据库应用程序,我想在不同的类别之间切换,如,等。我试图通过将状态设置为任何点击的文本值,稍后将用于形成完整的网址来获取。 这是我的代码: 所以我想从在函数外部,并在此处使用它

  • 问题内容: 经典(非js)重载方法: Javascript不允许使用同一个名称定义多个功能。这样,这样的事情就会出现: 除了传递带有重载的对象之外,JavaScript中是否有更好的解决方法来实现函数重载? 传递重载会很快导致函数变得过于冗长,因为每个可能的重载都需要一个条件语句。使用函数来完成那些条件语句的内部会导致带有范围的棘手情况。 问题答案: Javascript中的参数重载有多个方面:

  • 问题内容: 我想从PHPMyAdmin(或MySQl Workbench)导出数据库,然后将其导入SQLite数据库,这样我就可以进行本地编辑和测试而不会破坏实时版本。我对SQL非常陌生,因此所有导出选项等在这一点上对我来说都很密集。我尝试通过命令使用默认的导出设置PHPMyAdmin 也 但是这些引发了很多语法错误和“没有这样的表”错误。 我还尝试了在此处找到的经常被引用的脚本脚本,但是当我尝试

  • 我的自定义模块具有以下代码: 如果在我的模块外调用函数,效果很好,但是如果在模块内调用,则在运行时出现错误: (节点: 24372)UnhandledPromiseRejse警告:未处理的promise拒绝(拒绝id: 1):引用错误:未定义PrintNearestStore 当我将语法更改为: 它开始在模块内正常工作,但在模块外失败-我得到了错误: (节点: 32422)UnhandledPro