Como ler assinaturas
As seções de assinatura geralmente se parecem com isto:
vnode = m(selector, attributes, children)
| Argumento | Tipo | Obrigatório | Descrição |
|---|---|---|---|
selector | String|Object | Sim | Um seletor CSS ou um componente. |
attributes | Object | Não | Atributos HTML e propriedades de elementos. |
children | Array<Vnode>|String|Number|Boolean | Não | Filhos vnodes. Podem ser escritos como argumentos splat. |
| retorna | Vnode | Um vnode. |
A linha de assinatura acima da tabela indica a sintaxe geral do método, mostrando o nome do método, a ordem de seus argumentos e um nome de variável sugerido para o valor de retorno.
A coluna Argumento na tabela indica qual parte da assinatura é explicada pela respectiva linha da tabela. A linha retorna exibe informações sobre o valor de retorno do método.
A coluna Tipo indica o tipo de dado esperado para o argumento.
Uma barra vertical (|) indica que um argumento é válido se tiver qualquer um dos tipos listados. Por exemplo, String|Object indica que selector pode ser uma string OU um objeto.
Colchetes angulares (< >) após um Array indicam o tipo esperado para os itens do array. Por exemplo, Array<String> indica que o argumento deve ser um array e que todos os itens nesse array devem ser strings. Colchetes angulares (< >) após um Object indicam um mapa. Por exemplo, Object<String,Component> indica que o argumento deve ser um objeto, cujas chaves são strings e os valores são componentes.
Às vezes, tipos não nativos podem aparecer para indicar que uma assinatura de objeto específica é necessária. Por exemplo, Vnode é um objeto que possui uma estrutura de nó DOM virtual.
A coluna Obrigatório indica se um argumento é obrigatório ou opcional. Se um argumento for opcional, você pode defini-lo como null ou undefined, ou omiti-lo completamente, de modo que o próximo argumento seja interpretado em seu lugar.
Argumentos opcionais
Argumentos de função cercados por colchetes [ ] são opcionais. No exemplo abaixo, url é um argumento opcional:
m.request([url,] options)
Splats
Um argumento splat significa que, se o argumento for um array, você pode omitir os colchetes e passar os elementos do array como argumentos individuais para o método.
No exemplo na parte superior, isso significa que m("div", {id: "foo"}, ["a", "b", "c"]) também pode ser escrito como m("div", {id: "foo"}, "a", "b", "c").
Splats são úteis em algumas linguagens compile-to-JS, como CoffeeScript, e também permitem atalhos convenientes para alguns casos de uso comuns.
Assinaturas de função
As funções são denotadas com uma seta (->). O lado esquerdo da seta indica os tipos dos argumentos de entrada e o lado direito indica o tipo do valor de retorno.
Por exemplo, parseFloat tem a assinatura String -> Number, ou seja, recebe uma string como entrada e retorna um número como saída.
Funções com múltiplos argumentos são denotadas com parênteses: (String, Array) -> Number
Assinaturas de componente
Os componentes são denotados por meio de chamadas a m, com o argumento seletor inicial definido como uma constante nomeada no texto relevante:
vnode = m(m.route.Link, attributes, children)
| Argumento | Tipo | Obrigatório | Descrição |
|---|---|---|---|
attributes.href | Object | Sim | A rota de destino para navegação. |
attributes.selector | String|Object|Function | Não | Define o nome da tag a ser utilizada. Deve ser um seletor válido para m se fornecido; o padrão é "a". |
attributes.options | Object | Não | Define as opções passadas para m.route.set. |
attributes | Object | Não | Outros atributos que podem ser aplicados ao vnode retornado. |
children | Array<Vnode>|String|Number|Boolean | Não | Filhos vnodes para este link. |
| retorna | Vnode | Um vnode. |
Os filhos, quando especificados, são considerados como podendo ser escritos como argumentos splat, a menos que especificado de outra forma no texto.
Um elemento sem filhos relevantes e/ou atributos pode omitir o parâmetro completamente:
vnode = m(Component, attributes)
| Argumento | Tipo | Obrigatório | Descrição |
|---|---|---|---|
attributes.href | Object | Sim | O destino. |
attributes | Object | Não | Outros atributos que podem ser aplicados ao vnode retornado. |
| retorna | Vnode | Um vnode. |