Skip to content

Instantly share code, notes, and snippets.

@lejonmanen
lejonmanen / example.js
Created November 24, 2023 13:38
Using fetch with try+catch
// Simple request
async function sendRequest(url) {
try {
const response = await fetch(url)
if( response.status !== 200 ) {
console.log('Request wasn't successful. Code: ' + response.status)
return null
}
const data = await response.json()
return data // success
@lejonmanen
lejonmanen / example.js
Last active November 24, 2023 13:08
Sync vs async
// Option 1: use a promise directly
let data;
function itTakesTime1() {
return new Promise((resolve, reject) => {
/* do something that takes time and produces a value */
resolve(value)
})
}
@lejonmanen
lejonmanen / better.js
Last active October 24, 2024 15:32
Using Node.js async readline
import readline from 'node:readline'
async function ask(query) {
const rl = readline.createInterface({ input: process.stdin, output: process.stdout, tabSize: 4 });
return new Promise((resolve) => rl.question(query, (answer) => {
rl.close();
resolve(answer);
}));
}
@lejonmanen
lejonmanen / Ajax.jsx
Last active April 13, 2023 10:13
Send AJAX request in React component
import { useState, useEffect } from 'react'
// This function can be in a separate file
async function getData(setData) {
const url = 'API url here'
const response = await fetch(url)
const data = await response.json()
setData(data)
}
@lejonmanen
lejonmanen / verses.js
Last active April 2, 2023 20:33
Some verses from a Shakespeare sonnet
// https://www.gutenberg.org/files/100/100-0.txt
// The Project Gutenberg eBook of The Complete Works of William Shakespeare, by William Shakespeare
// (But this file only has the first 12)
const verses = ` 1
From fairest creatures we desire increase,
That thereby beauty’s rose might never die,
But as the riper should by time decease,
@lejonmanen
lejonmanen / CountAtom.js
Created April 2, 2023 18:55
React Recoil example
import { atom } from 'recoil'
// The key can be any unique value
// Default is the initial value
const countState = atom({
key: 'countState',
default: ''
});
export { countState }
@lejonmanen
lejonmanen / Ancestor.jsx
Last active April 12, 2023 12:33
React context example
import { useState } from 'react'
import { CounterContext } from './CounterContext.js'
/* The ancestor is the component that owns this particular piece of data. The ancestor is the only component that knows how to modify it. Therefore, if the descendants should be able to modify the value, we must send the set function as well.
If the descendants only need to read the value, we replace the object "countPackage" with the value "count".
*/
const Ancestor = () => {
// Initialize using default data
const [count, setCount] = useState(10)
@lejonmanen
lejonmanen / LiftingState.jsx
Created April 2, 2023 16:19
React: Lifting state up example
import { useState } from 'react'
/*
"Lifting state up" is useful when several components need to share state.
In this example, both Parent and Child needs to display the value of
"clicks". Child needs to update the value as well. We are lifting the
state up, out of the child component, into its parent.
1. Move the shared state to the common component - the component that
contains all of the components that needs to share state. Here, Parent is
@lejonmanen
lejonmanen / auth_config.json
Created December 16, 2022 12:13
Auth0 exempel, bara frontend
"Ersätt den här texten med domain och clientId från appens inställningar i Auth0"
@lejonmanen
lejonmanen / Demo.jsx
Created November 23, 2022 20:39
chart.js demo med React-komponent
import { Pie, Bar, Line } from 'react-chartjs-2';
import { data1, data2 } from './demoData'
const DemoChart = () => (
<div className="demo-chart">
<Bar data={data1} />
<Bar data={data2} />
</div>
)