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

JSX道具不应使用箭头函数eslint警告[重复]

孟英锐
2023-03-14

我有两个组件,一个组件将一些func作为道具传递给另一个组件,我不确定什么是正确的方法来做到这一点,而不必接收eslint错误:

代码:

<Parent>
  const doSmthHandler = useCallback((id: number)=> {
   //do some stuff 
  },[])
  <ComponentB>
     doSmth={()=>doSmthHandler(id)} // Here I get eslint warning: JSX props should not use arrow functions eslint warning
  </ComponentB>
</Parent>
<Button onPress={doSmth}>Do stuff</Button>

共有1个答案

丌官翰采
2023-03-14

代码的问题是直接将回调作为属性传递。在将其传递给组件之前,可以使用usecallback将其声明为包装器,如下所示:

const doSmthHandlerWrapper = useCallback(
    () => doSmthHandler(id),
    [id]
)

<ComponentB>
    doSmth={doSmthHandlerWrapper}
</ComponentB>
 类似资料:
  • 问题内容: 我正在用我的React应用程序运行lint,并且收到此错误: 这是我运行箭头功能(在里面)的地方: 是否应避免这种不良做法?最好的方法是什么? 问题答案: 为什么您不应该在JSX props中使用内联箭头功能 在JSX中使用箭头函数或绑定是不利于性能的不良做法,因为该函数会在每个渲染器上重新创建。 每当创建一个函数时,就会对前一个函数进行垃圾回收。渲染许多元素可能会在动画中产生垃圾。

  • 它必须是基本的,但请帮助我理解为什么这不起作用。 当我编写一个普通的arrow函数并返回jsx时,它就工作了。但是,当我使用async/await请求和相同的arrow函数返回jsx时,它失败了。 编辑: 实际上,我必须在列表视图中显示用户的配置文件图像。所以,我调用这个函数来检索我的块中相应用户的图像 这很有效 但事实并非如此

  • 不鼓励将箭头函数(“lambdas”)传递给 Mocha。Lambdas词法绑定 this,无法访问 Mocha 上下文。例如,以下代码将失败: describe('my suite', () => { it('my test', () => { // should set the timeout of this test to 1000 ms; instead will fail thi

  • ES6标准新增了一种新的函数:Arrow Function(箭头函数)。 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: function (x) { return x * x; } 在继续学习箭头函数之前,请测试你的浏览器是否支持ES6的Arrow Function: 'use strict'; ---- var f

  • 我想知道如何在ReactJS上使用setTimeout(),因为我正在这样做: 它调用两次函数this.reqMaq()。 如何防止第一次通话?在时间结束后继续打电话? 这是组件: 谢谢你。

  • 新的“胖箭头”符号还可以用更简单的方式来定义匿名函数。 请看下面的例子: console.log(x); incrementedItems.push(x+1); }); 计算一个表达式并返回值的函数可以被定义更简单: 下面代码与上面几乎等价: incrementedItems = items.map(function (x) { return x+1; 让我们在 验