[PITCH] - Uma biblioteca React que vai melhorar a sua vida em 19.25%!
Você já se cansou de passar props para baixo da árvore de componentes? 😖
Eu sei que isso é chato. Na verdade, muito chato.
Além de abrir brechas para falhas de segurança.
Às vezes, você usa o Redux ou Context API, mas nem sempre é a melhor solução.
Porque você precisa criar muito código que não é necessário.
Ou pior, você só precisa passar um valor simples de um componente para outro.
E foi por isso que eu criei o React Trigger State.
Ele faz, mais ou menos, isso daqui:
Isso mesmo! O React Trigger State permite uma comunicação entre componentes sem ter uma relação pai-filho.
Mas... e se o usuário for para outra página e voltar?
Bem, não se preocupe, porque nós armazenamos os dados, então você não precisa perder seu tempo!
Curioso?
Espero que sim!
Se tiver, tem essas histórias que eu criei com o Storybook:
Tente mudar o valor do estado e veja o que acontece:
E depois tente ir em outra história e voltar para ver se o estado continua o mesmo.
Como usar?
useTriggerState
É um hook que dispara mudanças de estado de qualquer lugar na aplicação.
Seu funcionamento é quase igual ao do useState:
import { useTriggerState } from "react-trigger-state";
// num componente:
const [state, setState] = useTriggerState({
name: "meu_primeiro_estado",
initial: "Wow, parece que é mágica!",
});
E então você pode pegar o valor do estado:
import { useTriggerState } from "react-trigger-state";
// em outro componente:
const [state, setState] = useTriggerState({
name: "meu_primeiro_estado",
});
Sim!! É mágica! Você não precisa mais de um componente pai para compartilhar o estado.
Isso virou problema do passado!
Se você se interessou, veja o exemplo no CodeSandbox:
Também há o useTriggerFunction
e useGetFunction
para compartilhar funções entre componentes.
E o useTriggerRef
para compartilhar referências entre componentes.
Posso fazer um post sobre eles também?
Me avise nos comentários!
Se ficou curioso, acesse o perfil na NPM e veja a documentação completa.
E se ainda tiver um minutinho, por favor, acesse a página do projeto no GitHub e de uma estrela!
Me ajuda de montãoo
Obrigado!
#michelTeloMeNotaPorFavor
Cara, não me entenda mal mas alguém precisa falar.
Sei que vc deve estar empolgado e tal, mas sua biblioteca não resolve problema nenhum no gerenciamento de estado.
Muito pelo contrário...
Eu estava analisando o código e vc está armazenando o estado em uma variável global dentro do objeto Window!!
Isso é uma péssima prática há anos e tem inúmeros problemas de segurança. Sem contar que é um baita anti-pattern no React.
Fica aqui o alerta, abs!
Gostei pela praticidade! Realmente isso é um problema em tudo que faço no React, e tenho resolvido agora com ContextAPI. Vi um comentário aqui criticando como foi desenvolvido, precisa ver isso com mais calma, mas achei genial.
Devo usar em breve! Mas tente evoluir e pegar mais opiniões, principalmente no desenvolvimento por baixo dos panos.
Obrigado!
Cara, adorei sua lib, ela é EXTREMAMENTE útil e se você conseguir construí-la de forma consistente e segura para ir a produção, você irá quebrar alguns paradigmas de estrutura de aplicações react, pois vai simplificar MUITO. Quantos componentes avôs eu eliminarei da minha aplicação? Quantos ContextApi, ou estados globais criados apenas para servir de comunicação simples entre dois componentes?
O que falta é você comprovar sua solidez em produção, principalmente em aplicativos Next e etc..
Boa sorte!
Boa! bem prático e fácil.
Muito interessante. Principalmente pela simplicidade de uso. Consigo facilmente me enxergar usando esses hooks :smile: Quanto ao título "19.25%" trata-se de algum dado real que você mediu em relação à performance ou algo assim?
Além disso, gostaria de mencionar que ainda vejo o valor do Redux e ContextAPI, porque os estados e funções não pertencem a nenhum componente, simplesmente são compartilhados e podem ser acessados por todos.
Porém, da mesma forma, vejo grande valor na sua biblioteca também. Tudo depende do caso de uso. Por exemplo se é algo que precisa ser acessado por apenas um componente que não tem essa relação de pai e filho, então por que ter que criar uma estrutura para servir todos os outros componentes? Apesar de que mesmo assim, com sua lib, ainda é possível que qualquer outro componente acesse esse estado, enquanto poupa linhas de código.
Sendo assim, parabéns pela excelente ideia e atitude :handshake:
Ganhou mais uma estrelinha :star:
Bom dia! Tô começando agora na programação e tive a impressão que o Redux faz isso, não? Me ajudem a entender por favor. Abraço!