如何在不使用 lambda 函数的情况下向 React 渲染组件中的处理程序事件发送参数?

How to sent argument to handler event in React render component not using lambda function?

我有 React 应用程序,我知道在渲染组件的 属性 中使用 lambda 函数不是一个好方法,因为它会像这样降低应用程序性能:

       <ConfirmSmsModal
          modal={args.modal}
          smsCheck={async (code: string) => {
            return await this._vm.onPressCodeConfirmSave(code);
          }}
          cancel={this._vm.onPressCancel}
        />

并且只放置一个事件处理程序而不是 lambda 函数是一种好方法。但是,如果我需要从 smsCheck 属性 获取参数,我该怎么做呢?

可能是这样的:

smsCheck={someFunction.bind(this, paramYouWantToSend)}

直接在 render 中声明匿名函数的唯一问题是它破坏了 memoization 因为在每个渲染上创建了一个新函数 Object.is 的浅层比较将始终断言到false

您的代码没有任何问题,但您始终可以将逻辑与 render 分离,方法是将其提升到处理程序

class Component extends React.Component{
    async handleOperation = param =>{
        const result = await apiCall(param)
    }

    render(){
        return <Child callback={this.handleOperation} />
    }
}