Eventos com React

Quando trabalhamos com JavaScript clássico temos N formas de trabalhar com eventos, adicionando atributos no nosso elemento html, definindo o atributo no JavaScript ou adicionando um listener, direto no elemento HMTL seria da seguinte forma:

Este método trás muitos problemas, por exemplo, manutenção e gerenciamento de eventos.

Outro formato adicionando um listener:

Isto funciona bem, mas você precisa ter uma organização no seu código, caso contrario ficará difícil de debugar seu código, nem todos os browser suportam este recurso sempre precisamos quer fallback para esta situação.

React tenta deixar o gerenciamento de eventos mais consistente. Todo evento retorna um SyntheticEvent, ele tem uma série de atributos:

Outra questão importante ele centralização do target, quem nunca teve problemas com targets dos eventos e precisou controlar um evento de click com stopPropagation() ou preventDefault(). O SyntheticEvent trabalha com o conceito de pooled, o objeto é limpo após o callback for invocado, por uma questão de performance.

Eventos suportados pelo React:

  • Clipboard Events
  • Composition Events
  • Keyboard Events
  • Focus Events
  • Mouse Events
  • Selection Events
  • Touch Events
  • UI Events
  • Wheel Events
  • Media Events
  • Image Events
  • Animation Events
  • Transition Events

Antes de trabalhar com Eventos e Componentes precisamos entender é a questão de Props e State, basicamente props temos os valores quando o componente é construído e state são os dados que a interface mantém durante a execução do aplicativo.

No exemplo acima crio um componente botão onde ele simplesmente faz o toggle de um atributo, poderia ser qualquer outro atributo ou interagir com outro elemento. O evento nos acionamos quando passamos o render do nosso componente neste caso onClick, poderíamos passar mais de um evento.

Lembrando todos os exemplos estão no meu github: https://github.com/fellyph/react-tutorial

Stateless vs Stateful

Continuando a série sobre ReactJS. Vamos falar sobre um dos princípios básicos sobre estado(state). Os dois últimos posts, por exemplos, criamos componentes estáticos(ou stateless), mas atualmente boa parte das aplicações precisam ter algum tipo de interação com o usuário.

As informações precisam ser alteradas em tempo real. Uma das base do React é um conceito de estado, cada componente utilizado tem uma estado próprio quando estado muda o React reconstrói a UI sem o dev fazer nenhuma requisição para alterar o DOM.

Tudo que precisamos fazer é especificar onde os dados terão o estado “alterável”. Para isso utilizamos uma função this.setState() para manter os dados atualizados. Quando ele é chamando, Qualquer informação alterada no componente ele chama o método render() para atualizar a tela.

Criando o primeiro componente Stateful

Até o momento temos apenas um component Stateless, precisamos transforma-lo em um elemento Stateful. Vamos dar uma olhada neste exemplo:

No exemplo acima, nosso componente possuí uma textarea e um título que mostra o tamanho do nosso texto e ele ainda está stateless. Ele precisa do método ReactDOM.render, para atualizar as informações quando o usuário edita o valor da caixa de texto. Para isso precisamos manter os dados(estado) e saber quando eles serão alterados, vamos ver o exemplo atualizado:

Primeiro passo é chamar o método getInitialState() ele é responsável por salvar o estado inicial do elemento, após adicionarmos o método getInitialState precisamos definir as ações que iremos tomar quando nosso componente sofre alguma alteração no seu estado, nesse caso adicionamos uma função “_textChange” ela simplesmente atualizar o estado do elemento com setState, quando ele for alterado.

No último bloco do nosso componente dois pontos importantes, agora no value do nosso textarea e do nosso h3 não acessamos os props do nosso componente e sim o estado “React.DOM.textarea({ value: this.state.text, …” e “React.DOM.h3(null, this.state.text.length)” outro ponto importante adicionamos um evento onChange para disparar a método _textChange.

Agora quando alteramos nosso componente ele atualiza os dados. Então o objetivo é fazer posts curtos com mais frequência, todos os tutoriais de react estão no meu git: https://github.com/fellyph/react-tutorial

WordCamp Europa

No final de junho entre os dias 24 e 26 acontece o WordCamp Europa o principal WordCamp na região com mais de 2 mil participantes esse ano o evento acontece em Viena capital da Áustria. Esse será o meu segundo WordCamp na europa já que meu primeiro foi em Londres logo nos primeiros meses que cheguei aqui.

Foi legal ver outras comunidades e notar que a comunidade brasileira é bem forte e com um alto nível técnico comparada as palestras que eu vi. A única diferença que eu ví no WordCamp Londres é o números de empresas que investem no evento. Isso deixa mais fácil você montar uma super estrutura com: legendas em tempo real, quatro auditórios, buffet ultra organizado com opções vegana, happy hour. Mas esse detalhe me da mais orgulho porque conseguimos fazer WordCamps de qualidade em diferentes estados.

Mas vamos falar o que interessa, logo quando cheguei fiquei de olho nos WordCamps selecionei alguns que poderia participar, fiz um levantamento sobre custo, grade e país que queria muito visitar. Não sei se todo mundo sabe mas estou passando por uma fase de estudante/mochileiro então meus recursos são limitados. Não posso sair viajando toda a europa então a escolha tem que ser feita a dedo.

É claro que o principal evento não poderia ficar de fora dessa lista. Primeira barreira foi a inscrição, estamos falando do principal evento  da Europa, ou seja, as inscrições acabaram em segundos. Entrei em contato com a organização, contei toda a história que sempre participo e palestro em WordCamps, ajudei na organização do WordCamp São Paulo por 3 anos e gostaria muito participar. A resposta foi melhor que esperava fui convidado para participar como voluntário.

Agora é só aguardar e fazer as malas, já foram passadas as primeiras instruções precisamos chegar um dias antes para alinhar as informações nada diferente que fazemos no Brasil, a única diferença é a quantidade de participantes de diferentes países.

O WordCamp Europa serão 3 dias de muito conhecimento com palestras divididas nos seguintes temas comunidade, desenvolvimento, negócios, design e conteúdo. Nos dias 24 e 25 serão o dia dedicado a palestras no dia 26 é o contributor Day, um dia reservado para contribuição com a plataforma.

palestrantens-wordcamp-europa

Agenda Completa aqui: https://2016.europe.wordcamp.org/schedule/

Quer acompanhar o evento? Ainda restam vagas para assistir o LiveStreaming:https://2016.europe.wordcamp.org/tickets/

Vou postar coisas no meu twitter(@fellyph) e snapchat(fellyphc) no dia do evento só acompanhar lá.

Os últimos Talks de 2013

2013 foi um ano incrível, e no fechar das cortinas tive a chance de palestrar em dois grandes eventos. O WEBBR 2013 e EATI 2013 duas experiência incríveis, o primeiro eventos é um dos maiores eventos de Web do Brasil e o segundo um super evento no extremo sul do Brasil.

10926290736_ae00782970_b

Na segunda feira dia 18 de abril tive a oportunidade de falar sobre performance em apps HTML5, a palestra inicialmente seria apresentada por Demian Borba que generosamente emprestou o conteúdo de sua palestra. Nela listei 20 dicas sobre performance. Tive sorte de abrir a rodada de palestras, abrir evento é sempre bom que você fica com tempo livre para conferir todas as outras palestras. No  WEBBR 2013 possuía  4 trilhas e eu fui escalado na trilha canvas, após minha palestra  tirando a palestra da Talita Pagani eu fiquei mais tempo na trilha section.

10926377694_79c9a666a9_b

Após a minha palestra foi a vez de Talita Pagani subir no auditório. Com a palestra sobre games com HTML5, apresentação que abordou os principais assuntos sobre desenvolvimento de jogos em HTML5, na palestra a Talita falou de algumas questões que ela enfrenta no dia-a-dia. Após a palestra da Talita conferi ótimas palestras com Bruno Azevedo, Caio Gondim e Almir Filho. No WEBBR tive a oportunidade de conhecer o trabalho do Bruno e por sorte encontrar novamente no EATI e conhecer mais sobre esse grande profissional.

10930898514_996b20165a_b

O EATI evento organizado pelo o Joel da Silva, aconteceu na unidade da Universidade Federal de Santa Maria de Frederico Westphalen, posso falar que foi um dos eventos que fui mais bem acolhido em 2013. A cidade de Frederico Westphalen está situada entra Santa Cataria, Rio Grande do Sul e Argentina. Para chegar lá tive que enfrentar uma verdadeira Odseia, sai na noite do dia 19 de novembro de Guarulhos para  Chapecó, fazendo escala em Florianópolis, chegando em Floripa por questões climáticas tive que ir de ônibus até Frederico Westphalen uma viagem que durou 11 horas. Chegando lá fui direto para a UFSM onde tinha um workshop no período da tarde e a noite uma palestra.

DSC_0150 DSC00849

As fotos acima são do Workshop sobre desenvolvimento de Jogos em HTML5, logo após o workshop foi a vez da palestra para os Estudantes da UFSM

DSC_0021

Posso falar que foi sofrido mas valeu a pena a recepção dos professores e alunos foi incrível. No dia seguinte a minha palestra foi a vez do momento BrazilJS, Jaydson e companhia durante todo o dia deram uma série de palestras sobre Front End. Devidamente recuperado eu acompanhei todas as palestras no segundo dia. Algumas das palestras eu tinha visto dias antes no Webbr Conf mas valeu a pena ver de novo.

DSCF0505 DSCF0521

2013 foi um ano incrível, aprendi bastante e conheci pessoas incríveis nas cidades onde passei, a batalha inicia novamente e que venha 2014! Um 2014 de muito sucesso para todos os leitores.

8º Encontro FEMUG SP + 8º Encontro Mobile Dev Group São Paulo

Olá pessoal venho anunciar o nosso primeiro encontro do ano, esse encontro será uma parceria com o grupo FEMUG-SP. O grupo organizado pelo Daniel Filho, para quem não conhece o grupo vai uma breve descrição:

O “Front-End Meet-Up Group” é um projeto que nasceu da necessidade de unir os desenvolvedores Front-End de São Paulo, e então tornou-se uma idéia coletiva, para que o acesso à informação seja feito em qualquer lugar que haja interesse do aprendizado.

 

O FEMUG realiza encontros periódicos sem um local fixo cada mês uma empresa fica responsável por seder o espaço para o evento, neste mês o encontro será realizado na BlackBerry. O Tema ainda não foi definido, ele é fechado dias antes do evento, para acompanhar a discussão sobre o encontro acesse a lista no seguinte link: http://bit.ly/FEMUG-SP

As conversas sobre o encontro começaram no ano passado Demian Borba, conheceu Daniel Filho no FEEC Brasil em Recife, isso mesmo em Recife nós conhecemos o grupo de São Paulo. E nesse mês será um prazer receber o FEMUG nas instalações da BlackBerry Brasil, também convidamos os integrantes do Mobile Dev Group São Paulo participarem do encontro. Quem não acompanha o nosso Dev Group no Facebook vai perguntar “Que grupo é esse?”. No final do ano passado em uma reunião realizada entre os managers do Brasil decidimos mudar o nome dos grupos de “BlackBerry Dev Group” para “Mobile Dev Group”.

Essa mudança visa abrir os grupos para desenvolvedores de outras plataformas, com o foco no enriquecimento do conhecimento entre os desenvolvedores independente da plataforma, atualmente temos muitas tecnologias convergentes em várias plataformas, por exemplo, AIR, Unity e Phone Gap. O Apoio da BlackBerry aos grupos continua com o mesmo foco os desenvolvedores.

E agora chega de “Blá Blá Blá” vamos ao que interessa o encontro será nesta Quarta-feira, 15 de Janeiro de 2014 às 20:00h no Escritório da BlackBerry Brasil:

Centro Empresarial Nações Unidas, Torre norte – 35º andar
Av. das Nações Unidas, 12901 – Itaim Bibi
São Paulo

Interessado em participar do evento por favor se inscrever no seguinte link: http://www.eventick.com.br/femug-sp-8

E até lá pessoal.

 

 

 

Use o Input type apropriado para cada tipo de dado

Com o HTML5 foram introduzidos os novos inputs types isso representou um ganho enorme para os usuários mobile que utilizam formulários em seu app e site, utilizar o input type correto é muito importante para experiência do usuário. Nesse tutorial vou listar os principais inputs type para você utilizar em sua aplicação.

date

Este campo é preparado para receber uma data, será exibido para o usuário um calendário para cadastrar a informação. O resultado da utilização do input é o seguinte:

IMG_00000575

time

Este campo campo é utilizado para realizar cadastro de hora. Da mesma forma do date ele irá habilitar um interface adaptada para cadastro da informação.

IMG_00000576

month

Campo é similar ao date mas resgata apenas a entrada de mês e ano sem o time zone.

IMG_00000572

number

Input para cadastro específico de números, para o usuário mobile ele exibe apenas o teclado numérico como a imagem a seguir:
input_number

range

Cria um elemento slide para receber um valor dentro de um intervalo especificado pelas propriedades min e max.

range

color

Permite ao usuário selecionar uma cor específica retornando um valor hexadecimal.

IMG_00000571

url

Este elemento cria uma validação para url em invoca um teclado específico para o cadastro da info.

email

Assim como o type url esse item realiza uma validação esperando uma info com @. Caso o usuário tente cadastrar uma informação inválida teremos o seguinte alerta:

IMG_00000582

tel

Input Similar ao number com apenas números, mas com o teclado semelhante ao discador:

IMG_00000581

search

Neste campo é adicionado um “x” no canto esquerdo quando é adicionado algum conteúdo, o “x” tem a função de limpar o conteúdo. Como o nome sugere este Input é utilizado em campos de busca.

search

Esse itens além de ter o suporte no Blackberry 10 também tem suporte nas maiorias dos browsers e muito coisa nova esta vindo por ai. Além de novos inputs temos novas propriedades que será o tema do próximo post sobre input.

O código dos exemplos confere aqui :

https://github.com/fellyph/Tutorial-bbUI/tree/master/tutorial-input/www

Já está disponível o novo WebWorks SDK 2.0 Beta baseado no Apache Cordova

cordova

A BlackBerry trabalhou pesado para essa grande novidade, o WebWorks 2.0, essa nova foi totalmente construída em cima do Apache Cordova. Que vem cheia da novidades

Apache Cordova

Resumindo essa grande novidade o WebWorks agora é uma distribuição do Cordova com uma série de adaptações com foco na melhoria da experiência dos desenvolvedores. WebWorks automaticamente inclui todas as APIs do Apache Cordova, bem como as funcionalidades já existentes no WebWorks(que já foram implementadas como plugin do Cordova e estão disponíveis aqui). Claro que isso também já foi incluído com a nova interface de linha de comando baseada no “Cordova command line” mas com algumas melhorias do BlackBerry 10.

O novo WebWorks SDK

Com essa nova versão do SDK, contém o novo instalador e uma nova ferramenta gráfica, este recurso irá reduzir bastante o tempo de desenvolvimento. A ferramenta gráfica foi desenvolvida pelo Tech Center da UFAL.

Captura de Tela 2013-11-28 às 14.33.29

A nova ferramenta ajuda na administração dos seus projetos, setando informações básicas no seu config.xml, além de uma ferramenta de build/sign/deploy de sua aplicação para o device ou simulador. Este é o primeiro passo para um novo patamar em ferramentas de desenvolvimento para WebWorks.

Compatibilidade

Aplicações em WebWorks antigas e as que utilizam a nova versão SDK irão funcionar em todas as versões do BlackBerry 10. Isto permite uma flexibilidade para o desenvolvedor migrar quando quiser para o novo SDK 2.0. Vale lembrar que o novo SDK baseado no Apache Cordova será o foco para o novos devices da BlackBerry.

Uma das vantagens de se trabalhar com o Apache Cordova que ela permite uma fácil adaptação de sua aplicação para outras plataformas, como Cordova prove múltiplas camadas em comum com outras plataformas desenvolver soluções multi plataformas será muito simples.

Além disso, muitas das top soluções enterprise do mercado, com IBM e SAP, estão adotando o Apache Cordova. Assim suas aplicações WebWorks tornarão muito mais acessíveis para essa plataforma.

Migração

Se você quer migrar suas aplicações neste momento, você pode conferir a documentação aqui.

Documentação e Exemplos

A BlackBerry quer garantir que você tenha todas as ferramentas que você precisa para trabalhar com a mais nova versão do SDK, por isso já está disponível toda a documentação atualizada aqui, exemplos e API Reference(Incluindo conteúdo para APIs do núcleo Apache Cordova). O site do Developer BlackBerry foi bifurcado para garantir conteúdo para as duas versões.

Os exemplos do GitHub também foram atualizados e você confere aqui

Essa foi uma grande novidade para os desenvolvedores de aplicações em HTML5, isso abre novos horizontes para a plataforma e atrai cada vez mais novos desenvolvedores. Realmente foi um trabalho árduo que está apenas começando.

Mais posts sobre o assunto em breve.