我有两个组件,一个组件将一些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>
代码的问题是直接将回调作为属性传递。在将其传递给组件之前,可以使用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; 让我们在 验