Context API é uma maneira super bacana de passar estados pelos componentes sem precisar utilizar props
, permitindo a atualização desse estado em qualquer parte da sua aplicação. Claro que em algumas situações é mais adequado o uso das props, mas , à medida que vamos aumentando àrvore de elementos, pode ficar bem chatinho transportar essas informações sem o uso de um gerenciador de estado global. E caso você não tenha notado esse é o trabalho da Context API. 😅
Routes and Controllers
Router e Controllers fazem parte da arquitetura em camadas do back-end. Esse padrão de arquitetura possui algumas outras camadas, mas vamos falar como criar as duas primeiras camadas do back-end:
- Criando Routers
Quanto mais sua aplicação cresce, maior é a necessidade para uma organização. A primeira tarefa é definir as rotas que a sua aplicação vai ter e para isso você vai precisar de uma pasta chamada "routes" dentro da sua src
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SELECT * FROM produtos LIMIT 5; | |
SELECT * FROM clientes LIMIT 3; | |
SELECT * FROM produtos WHERE nome = 'Televisão 43"'; | |
INSERT INTO produtos (nome, preco) VALUES ('Macbook Pro 13"', 1700000); | |
DELETE from clientes WHERE nome = 'Orlando Pequeno Jesus'; | |
UPDATE produtos SET preco = 8000 WHERE nome = 'Pelúcia Strange Planet com Gatinho'; | |
UPDATE produtos SET preco = 980000 WHERE nome = 'Violão Lava ME 2'; | |
UPDATE clientes SET cpf = '04652651298' WHERE nome = 'Lucca Santarém Branco'; | |
-- 9 | |
-- -- 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- conectando no banco de dados e comandos básicos | |
-- sudo -i -u postgres | |
-- psql | |
-- \!clear | |
-- \l | |
-- \c padaria_sucesso | |
-- \dt | |
-- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- 1 | |
SELECT | |
users.id, | |
users.name, | |
cities.name | |
FROM | |
users | |
JOIN cities ON cities.id = users.id | |
WHERE | |
cities.name = 'Alegre'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- 1 | |
SELECT COUNT("endDate") AS "currentExperiences" FROM experiences; | |
-- SELECT COUNT(*) AS "currentExperiences" FROM experiences WHERE "endDate" IS NOT NULL; | |
-- 2 | |
SELECT "userId" AS id, COUNT(*) AS educations FROM educations GROUP BY "userId" ORDER BY id ASC; | |
-- 3 | |
SELECT users.name as writer, COUNT(*) as "testimonialCount" from testimonials JOIN users ON users.id = testimonials."writerId" GROUP BY users.name ORDER BY users.name ASC; | |
-- 4 | |
SELECT MIN(jobs.salary) AS "maximumSalary", roles.name AS "role" FROM roles JOIN jobs ON roles.id = jobs."roleId" WHERE jobs.active = true GROUP BY roles.name ORDER BY "maximumSalary"; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- CREATE DATABASE pratica_integridade_e_consistencia; | |
CREATE TYPE customer_phone_type AS ENUM ('landline', 'mobile'); | |
CREATE TYPE transaction_type AS ENUM ('deposit', 'withdraw'); | |
CREATE TABLE | |
customers ( | |
id SERIAL PRIMARY KEY, | |
full_name VARCHAR(255) NOT NULL, | |
cpf VARCHAR(11) NOT NULL UNIQUE, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
await new Promise(function (resolve) { | |
setTimeout(function () { | |
resolve(); | |
}, 1000); | |
}); | |
// ... Can be shortened to: | |
await new Promise(function (resolve) { | |
setTimeout(resolve, 1000); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- 1. Busque produtos quaisquer, limitados a 5; | |
SELECT | |
* | |
FROM | |
produtos | |
LIMIT | |
5; | |
-- 2. Busque clientes quaisquer da loja, limitados a 3; | |
SELECT |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 1 - Crie uma interface UserData para o formulário abaixo | |
// 2 - Crie uma variável global UserData no window, ela será um objeto qualquer | |
// 3 - Adicione um evento de keyup ao formulário | |
// 4 - Quando o evento ocorrer adicione a {[id]: value} ao UserData | |
// 5 - Salve UserData no localStorage | |
// 6 - Crie uma User Type Guard, para verificar se o valor de localStorage é compatível com UserData | |
// 7 - Ao refresh da página, preencha os valores de localStorage (caso seja UserData) no formulário e em /window.UserData | |
const app = document.getElementById("app"); |
OlderNewer