如何在没有 lambda 函数的 React Native 中通过单个处理程序处理几个 TextInput?
Posted
技术标签:
【中文标题】如何在没有 lambda 函数的 React Native 中通过单个处理程序处理几个 TextInput?【英文标题】:How to handle a few TextInput by single handler in React Native without lambda function? 【发布时间】:2020-04-10 00:46:41 【问题描述】:我需要在 React Native 应用程序中通过单个事件处理程序处理一些输入,但不要使用 lambda 函数,因为它在我的应用程序中是被禁止的。使用 lambda 函数,您可以只发送第二个参数,它可能是这样的:
<TextInput
placeholder = 'email'
onSubmitEditing =Keyboard.dismiss
onChangeText = (text) => this.handleTwoInputs(text, 'email');
autoCorrect = false
/>
<TextInput
placeholder = 'name'
onSubmitEditing =Keyboard.dismiss
onChangeText = (text) => this.handleTwoInputs(text, 'name');
autoCorrect = false
/>
handleTwoInputs = (text, type) =>
if(type === 'name')
this.inputName = text;
else
this.inputEmail = text;
但是没有 lambda 函数怎么办呢?
【问题讨论】:
jocoders 你有时间检查我上次的编辑吗? 【参考方案1】:你不需要使用箭头函数:
<TextInput
placeholder = 'email'
onSubmitEditing =Keyboard.dismiss
onChangeText = function(text) this.handleTwoInputs(text, 'email');
autoCorrect = false
/>
<TextInput
placeholder = 'name'
onSubmitEditing =Keyboard.dismiss
onChangeText = function(text) this.handleTwoInputs(text, 'name');
autoCorrect = false
/>
编辑:
好的,我想我误解了这个问题。使用onChange
而不是onChangeText
,可以实现您想要实现的目标:
<TextInput
name = 'email_input'
placeholder = 'email'
onSubmitEditing =Keyboard.dismiss
onChangeText = handleTwoInputs
autoCorrect = false
/>
<TextInput
name = 'name_input'
placeholder = 'name'
onSubmitEditing =Keyboard.dismiss
onChangeText = handleTwoInputs
autoCorrect = false
/>
handleTwoInputs = ( nativeEvent ) =>
const eventCount, target, text = nativeEvent
if (target.name === 'name_input')
this.inputName = text;
else
this.inputEmail = text;
【讨论】:
非常感谢您的回答,但在我的应用程序中,我使用 MVC 模式,我的逻辑与视图分开,这意味着我不能将 onChangeText 属性内的函数直接放入 TextInput组件,这样做不是好习惯,我可以将处理程序发送到那里 所以你想要的是将相同的处理程序传递给所有输入,但不知何故它们的行为不同。恐怕这是不可能的......让我说这与 MVC 无关,而是与 JS 的工作方式有关。处理程序不是逻辑,它只是您正在使用的匿名函数。最终你将不得不通过第二个参数。也许您创建了一个在内部执行它的自定义输入,但它是相同的。让我在我的答案中添加一些示例,但我想您已经知道了。 你说得对,我没有找到任何解决方案,决定使用 lambda 函数,非常感谢 看看最后一个答案 :) 酷!这就是我需要的!非常感谢你:)))以上是关于如何在没有 lambda 函数的 React Native 中通过单个处理程序处理几个 TextInput?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 API Gateway 和 React 应用程序之间启用 AWS 中的 CORS 策略?
如何在没有内联代码的情况下使用 lambda 函数部署 cloudformation?
如何创建一个填充了 C 风格函数指针和 lambda 的向量(有和没有捕获)