1

这段代码假设是多个TextInputs 的通用处理函数,由 s 调用onChangeText

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

.

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

我不明白val它的值在哪里得到,它没有在任何地方显式定义,如果 val 被传递onChangeText并且不必在处理程序的道具中显式命名,那么为什么以下在没有箭头符号的情况下不起作用:

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

没有 a ,代码也不能工作return,为什么?

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

完整代码在这里

4

2 回答 2

1

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

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

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

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

在其他情况下,您不会返回函数。因此,当TextInput'sonChangeText不是函数时,它只会忽略您传递给它的任何内容。

于 2020-05-15T12:26:32.897 回答
0
  • 它使用高阶函数处理事件绑定,是编写函数的基本方式之一。
于 2020-05-15T15:27:35.130 回答