Continuo vendo funções semelhantes a esta em uma base de código em que estou trabalhando:
const func = ({ param1, param2 }) => {
//do stuff
}
O que exatamente isso está fazendo? Estou tendo dificuldade em encontrá-lo no google, porque nem tenho certeza de como se chama, ou como descrevê-lo em uma pesquisa no google.
javascript
ecmascript-6
Nathan
fonte
fonte
Respostas:
É desestruturante , mas contido nos parâmetros. O equivalente sem a desestruturação seria:
fonte
Isso é passar um objeto como uma propriedade.
É basicamente um atalho para
Outra maneira de usar essa técnica sem parâmetros é a seguinte, vamos considerar então por um segundo que someObject contém essas propriedades.
fonte
É uma atribuição de desestruturação do objeto. Como eu, você pode ter achado surpreendente porque a sintaxe de desestruturação de objeto ES6 se parece, mas NÃO se comporta como a construção literal de objeto.
Ele suporta a forma muito concisa que você encontrou, bem como renomear os campos e argumentos padrão:
Essencialmente, é {oldkeyname: newkeyname = defaultvalue, ...}. ':' NÃO é o separador de chave / valor; '=' é.
Algumas consequências dessa decisão de design de linguagem é que você pode ter que fazer coisas como
Os parênteses extras evitam que as chaves esquerdas sejam analisadas como um bloco, e o ponto-e-vírgula inicial evita que os parênteses sejam analisados como uma chamada de função para uma função na linha anterior.
Para obter mais informações, consulte: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
Cuidado, os principais erros durante a atribuição da desestruturação do objeto NÃO ocorrem; você acaba com valores "indefinidos", seja um erro de chave ou algum outro erro que foi propagado silenciosamente como "indefinido".
fonte