Definir state usando utilizando Currying - #ReactJS
Bem antes de partir para o exemplo precisamos definir o que Currying?
import React from 'react'
const Form = () => {
const [username, setUsername] = React.useState('')
const [password, setPassword] = React.useState('')
const setInput = (setter) => (event) => {
setter(event.currentTarget.value)
}
return (
<form>
<input value={username} onChange={setInput(setUsername)} />
<input value={password} onChange={setInput(setPassword)} />
</form>)
}
Muito bom usar programação funcional para reduzir código, hoje em dia é muito comum utilizar funções como o map
, filter
e reduce
, elas melhoram muito a qualidade do código
Uma curiosidade para os nerds ai é que Currying foi uma técnica utilizada extensivamente por Haskell Curry (Apesar de ter sido pensada 6 anos antes por Moses Schönfinkel), e seu nome é usado em homenagem na linguagem de programação puramente funcional Haskell
Sem o currying, não seria possível ter funções com múltiplos parâmetros no cálculo lambda, que é um modelo de expressar computação através da lógica matemática, comumente comparada a Máquina de Turing, e que foi utilizada por muitas linguagens de programação