Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在回调中识别react native TextInput实例_Javascript_React Native - Fatal编程技术网

Javascript 在回调中识别react native TextInput实例

Javascript 在回调中识别react native TextInput实例,javascript,react-native,Javascript,React Native,我也在尝试创建一个视图,使用6个单独的1位数TextInput实例接收6位数验证编码器。我想为每个输入分配一个回调,以便跟踪输入代码的用户,但我看不到任何明显的方法 我可以看到onChangeText道具,但这无法识别六个TextInputs中的哪一个正在调用它 我相信有一种简单的方法可以做到这一点,但我并不清楚,所以我非常感谢您的帮助。如果您使用了onChangeText道具,您可以在其内部调用箭头函数,调用所需的回调函数,传递输入的“id”和值 大概是这样的: <TextInput o

我也在尝试创建一个视图,使用6个单独的1位数TextInput实例接收6位数验证编码器。我想为每个输入分配一个回调,以便跟踪输入代码的用户,但我看不到任何明显的方法

我可以看到onChangeText道具,但这无法识别六个TextInputs中的哪一个正在调用它


我相信有一种简单的方法可以做到这一点,但我并不清楚,所以我非常感谢您的帮助。

如果您使用了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
,它看起来更棒!。我只是在建议新的选择:)