No React, a definição de uma função de ordem superior é que se o parâmetro recebido por uma função especificada for outra função ou o valor de retorno da chamada ainda for uma função, então a função especificada é chamada de função comum de ordem superior; -order funções Existem Promise, setTimeout, "arr.map()" e assim por diante.
O ambiente operacional deste tutorial: sistema Windows 10, react versão 17.0.1, computador Dell G3.
Função de ordem superior: se uma função atende a qualquer uma das duas especificações a seguir, então a função é uma função de ordem superior.
1. Se o parâmetro recebido pela função A for uma função, então A pode ser chamada de função de ordem superior.
2. Se o valor de retorno da função A ainda for uma função, então A poderá ser chamada de função de ordem superior.
Funções comuns de ordem superior incluem: Promise, setTimeout, arr.map(), etc.
Os exemplos são os seguintes:
Os seguintes casos são funções de ordem superior
saveFormData = (event)=>{return ()=>{console.log('@');}}<form onSubmit={this.handleSubmit}>Nome de usuário:<input onChange={this.saveFormData('nomedeusuário' ) } type="text" name="username"/>Senha: <input onChange={this.saveFormData('password')} type="password" name="password"/><button>Login</button> < /formulário>a. this.saveFormData('username') usa o valor de retorno de saveFormData como retorno de chamada de onChange, não saveFormData como retorno de chamada.
b. Se você usar this.saveFormData('username'), então a função de atribuição saveFormData deverá retornar algo para onChange como um retorno de chamada.
c. Assim, imprimimos o símbolo '@' na função de retorno de saveFormData, então o valor impresso será retornado para onChange e o símbolo @ será impresso durante a inserção na caixa de entrada.
d. O dataType passado por saveFormData é na verdade nome de usuário e senha.
e. O que chamamos ao inserir deve ser a função de retorno. Return é o retorno de chamada real.
saveFormData = (dataType)=>{// console.log(dataType);return (event)=>{// console.log('@');console.log(dataType,event.target.value);}}f. O conteúdo pode ser gerado. Podemos usar setState para salvá-lo no estado.
this.setState({[dataType]:event.target.value})