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. |