Antes de começar
- pensar como será o formato do seu estado global
- pensar quais actions serão necessárias na sua aplicação
Instalação
- npx create-react-app my-app-redux;
- npm install --save redux react-redux;
{ | |
"_id": "LKKmV9iliS0hgpe4", | |
"name": "Shuruh", | |
"type": "character", | |
"data": { | |
"attributes": { | |
"raca": "Trog (F)", | |
"pv": { | |
"value": 8, | |
"min": -500, |
// Primeiro Sistema | |
// 1: 10, 2: 8, 3: 6, 4: 5, 5: 4, 6:3, 7: 2, 8: 1 | |
let firstSystem = [10, 8, 6, 5, 4, 3, 2, 1]; | |
// Segundo Sistema | |
// 1: 25, 2: 18, 3: 15, 4: 12, 5: 10, 6: 8, 7: 6, 8: 4, 9: 2, 10: 1 | |
let secondSystem = [25, 18, 15, 12, 10, 8, 6, 4, 2 , 1]; | |
// Resultado da Corrida | |
// 1: Rubinho, 2: Schumacher, 3: Alonso, 4: Hamilton |
function rgb(r, g, b){ | |
// EARLY RETURN (VALIDAR ANTES) | |
// se for negativo, fica 00 (0) | |
// se passar de 255, fica FF (255) | |
let array = [r, g , b]; | |
for(let color in array){ | |
if(array[color] < 0){ | |
array[color] = "00"; | |
} else if (array[color] > 255){ |
// 1.Adicione a tag h1 com o texto Exercício 5.2 - JavaScript DOM como filho da tag body ; | |
let h1 = document.createElement('h1'); | |
document.body.appendChild(h1); | |
h1.innerHTML = "Exercício 5.2 - JavaScript DOM"; | |
// 2.Adicione a tag div com a classe main-content como filho da tag body ; | |
let mainContent = document.createElement('div'); | |
mainContent.classList.add('main-content'); | |
document.body.appendChild(mainContent) |
function isValidCPF(cpf) { | |
// Validar se é String | |
if (typeof cpf !== 'string') return false | |
// Tirar formatação | |
cpf = cpf.replace(/[^\d]+/g, '') | |
// Validar se tem tamanho 11 ou se é uma sequência de digitos repetidos | |
if (cpf.length !== 11 || !!cpf.match(/(\d)\1{10}/)) return false | |
// ativa o modo estrito do JS | |
'use strict'; | |
// importa libs para a configuração do Sequelize | |
const fs = require('fs'); | |
const path = require('path'); | |
const Sequelize = require('sequelize'); | |
// recupera o nome do arquivo "index.js" | |
const basename = path.basename(__filename); |
// Vamos ver os seguintes topicos hoje | |
// arrays/tuplas, como tipar objetos, como usar aliases (que já vimos levemente ontem), classes, interfaces e generics | |
// vamos incrementar o exemplo da aula passada | |
// Vamos criar uma arquivo trybeClass.ts | |
let trybeClass: Object = {}; | |
// Já tipamos nossa aula. Mas qual o problema aqui? |
export default class Person { | |
public readonly age: number | |
constructor( | |
protected readonly _name: string, | |
protected readonly birthDate: Date | |
) { | |
this.age = this.calcAge(birthDate) | |
// idade só é calculada na construção, então se o birthDate mudar, a idade não será atualizada | |
// faz sentido caso o birthDate não deva ser mudado também |
export default class Person { | |
constructor( | |
protected readonly _name: string, | |
protected _birthDate: Date | |
) { | |
} | |
private calcAge(){ | |
const timeDiff = Math.abs(Date.now() - new Date(this._birthDate).getTime()); |