React Native:onChangeText 在此 TextInput 代码中如何传递值?

React Native: How value is past by onChangeText in this TextInput code?

此代码假定为多个 TextInput 的通用处理函数,由 onChangeText 调用:

  getHandler= key =>{
    return val =>{
      this.setState({[key]: val})
    }
  }

.

<TextInput
          onChangeText={this.getHandler('phone')}
        />

我不明白 val 从哪里得到它的值,它没有在任何地方明确定义,如果 val 由 onChangeText 传递并且不必在处理程序的道具然后为什么没有箭头符号以下内容不起作用:

  getHandler = key => {
      this.setState({ [key]: val });
  };

如果没有 return,代码也无法运行,为什么?

//this code also doesn't work without return  
getHandler = key => {
      val => {
      this.setState({ [key]: val });
    };
  };

完整代码here

假设您已经编写了TextInput。你得到了 onChangeText 函数。你会这样称呼它

// To avoid cases when no handler function is set
if(typeof onChangeText === "function"){ 
   onChangeText(this.value);
}

在第一种情况下,您传递的是 getHandler 函数的 return 值,即此函数(未命名):

val =>{
      this.setState({[key]: val})
    }

在其他情况下,您 return 不是函数。因此,当 TextInputonChangeText 不是函数时,它会忽略您传入的任何内容。

  • 使用高阶函数处理事件绑定,是函数的基本写法之一