Javascript 在回调中识别react native TextInput实例
我也在尝试创建一个视图,使用6个单独的1位数TextInput实例接收6位数验证编码器。我想为每个输入分配一个回调,以便跟踪输入代码的用户,但我看不到任何明显的方法 我可以看到onChangeText道具,但这无法识别六个TextInputs中的哪一个正在调用它Javascript 在回调中识别react native TextInput实例,javascript,react-native,Javascript,React Native,我也在尝试创建一个视图,使用6个单独的1位数TextInput实例接收6位数验证编码器。我想为每个输入分配一个回调,以便跟踪输入代码的用户,但我看不到任何明显的方法 我可以看到onChangeText道具,但这无法识别六个TextInputs中的哪一个正在调用它 我相信有一种简单的方法可以做到这一点,但我并不清楚,所以我非常感谢您的帮助。如果您使用了onChangeText道具,您可以在其内部调用箭头函数,调用所需的回调函数,传递输入的“id”和值 大概是这样的: <TextInput o
我相信有一种简单的方法可以做到这一点,但我并不清楚,所以我非常感谢您的帮助。如果您使用了onChangeText道具,您可以在其内部调用箭头函数,调用所需的回调函数,传递输入的“id”和值 大概是这样的:
<TextInput onChangeText={(text) => {
this.yourCallback(text, 1); // 1 is the id of the input.
}
/>
{
this.yourCallback(text,1);//1是输入的id。
}
/>
我还没有测试过这个,但是经过一些调整,它应该可以解决您的问题:
this.state = {
code: []
}
onChangeText = (text, i) => {
const code = this.state.code
if (!Number.isNaN(text)) {
this.setState({
code: [...code.slice(0, i), +text, ...code.slice(i + 1)]
})
}
}
render(){
return(
{Array.from({length: 6}, (_, i) => {
return (
<TextInput value={this.state.code[i]} onChangeText={text => this.onChangeText(text, i)} />
)
})}
)
}
this.state={
代码:[]
}
onChangeText=(文本,i)=>{
常量代码=this.state.code
如果(!Number.isNaN(文本)){
这是我的国家({
代码:[…代码.slice(0,i),+text,…代码.slice(i+1)]
})
}
}
render(){
返回(
{Array.from({length:6},({,i)=>{
返回(
this.onChangeText(text,i)}/>
)
})}
)
}
由于Chrome(例如)中使用的JS Engine V8中的默认JS类(如
Array
)和React Native(JavaScriptCore)中使用的默认JS类的行为不同,Array.from
在您的应用程序中的行为可能不同。如果您已经在项目中使用了lodash
或下划线
,我建议您改用lodash.range(6).map((I)=>)
如果你说……在你的应用程序中可能表现不同,那么为什么不直接进行forEach
循环forEach
并不能解决动态生成给定大小(6个元素)数组的问题。而硬编码[0,1,2,3,4,5]
然后执行[]。另外,知道JS引擎中的差异总是很好的。我的意思是for
循环,如果你知道大小,就循环它,for(让i=0;i
并完全推到阵列,这也会起作用。使用myMagicVariable
,它看起来更棒!。我只是在建议新的选择:)