Skip to content

Instantly share code, notes, and snippets.

View ernestlv's full-sized avatar
Hello World!

Ernest Leyva ernestlv

Hello World!
View GitHub Profile
@ernestlv
ernestlv / ref.js
Created July 5, 2023 20:40
#React - Access DOM element using Hook Ref
const Square = () => { // Root Functional Component
let inputRef = React.useRef(null); // React Hook
const click = () => { // 'this' points to window
alert(inputRef.current.value);
}
console.log("render square");
// View
@ernestlv
ernestlv / conditional.js
Created July 5, 2023 20:03
#React conditional render
const Square = () => { // Root Functional Component
let [show, setShowMe] = React.useState(false); // React Hook
const click = () => { // 'this' points to window
setShowMe(!show);
}
console.log("render square");
// View
@ernestlv
ernestlv / loop.js
Last active July 5, 2023 19:48
#React - Dynamic List using loop
const Square = ( {text} ) => { // Root Functional Component
console.log("render square:", text);
// View
return (
<div style={{display:'table', backgroundColor:'blue'}}>
{
[1,2,3].map((key) => {
return (
@ernestlv
ernestlv / event.js
Last active July 5, 2023 19:47
#React - Access event object and DOM element
const Square = () => { // Root Functional Component
let listRef = React.useRef(null); // React Hook
const click = (event) => { // event object - 'this' points to window
var domElement = event.target;
alert(domElement.textContent);
}
console.log("render square");
@ernestlv
ernestlv / list.js
Created July 5, 2023 19:46
#React - Access a DOM element in a dynamic list
const Square = () => { // Root Functional Component
let listRef = React.useRef(null); // React Hook
const click = () => { // 'this' points to window
var children = listRef.current.querySelectorAll('div');
var domElement = children[2]; // third DOM element
alert(domElement.textContent);
}
console.log("render square");
@ernestlv
ernestlv / tasks.js
Last active July 3, 2023 18:58
A javascript promise generator that queues tasks
/*
* A promise generator that queues tasks
*/
function initTaskGenerator() {
function yieldPromise(task) { // executed in yield expression
return new Promise((resolve, reject) => {
try {
setTimeout(() => {
var value = typeof task === "function" ? task() : task;
resolve(value);
@ernestlv
ernestlv / iteratorFn.js
Created July 3, 2023 16:11
A generator is an iterator function whose body you can slice into many parts by combining a yield / iterator.next() expression.
/*
* A generator is an iterator function whose body you can slice into many parts by combining a yield / iterator.next() expression.
*/
function* iteratorFn(value) {
//body does not execute until first iterator.next() is called
console.log("before yield!", value); // execute first iterator body slice
value = yield yieldFn(value); // stop execution & returns iterator value - resumes execution, after second iterator.next() is called & updates value from arg in iterator.next( arg )
console.log("after yield:", value); // execute second iterator body slice
return "I am done!" + value + "second part"; // stops execution & returns final iterator value
@ernestlv
ernestlv / test-component.js
Last active June 20, 2023 17:29
#Angular component test with change detection, click event and input validation
import { DebugElement } from '@angular/core';
import { TestBed } from '@angular/core/testing';
import { By } from "@angular/platform-browser"; // predicates for browser environment
import { ReactiveFormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(() => TestBed.configureTestingModule({
imports: [ReactiveFormsModule],
declarations: [AppComponent]
@ernestlv
ernestlv / state.js
Last active June 16, 2023 20:10
Creates a simple local state in react with hooks
import { useState } from 'react'; // hook
const Root = () => { // functional component
const [ state, setState ] = useState(0); // local state for Root component
const click = () => {
setState( state + 1 ); // re-render Main component
}
console.log("render Main:", state);
return ( // jsx
@ernestlv
ernestlv / sectional.tsx
Created June 15, 2023 20:43
Simple React functional component with TypeScript annotations
import React from 'react';
interface SectionalProps {
title:string;
list:Array<{key:string, value:string}>;
onClick:( value: string ) => void;
}
export const Sectional:React.FC<SectionalProps> = ( { tile, list, onClick } ) => { //props is passed by react as an object