2023-06-11
js
2023-04-12
React
vite-
next.js
Example with Vite:
npm create vite@latest
================================
npm install -g create-react-app
maxschwarzmueller https://github.com/academind/react-complete-guide-course-resources
PizzaStore: CartContext Modal Button
Modal basic:
https://github.com/academind/react-complete-guide-course-resources/blob/main/code/08%20Refs%20Portals/07-adding-a-modal-cmp/src/components/ResultModal.jsx
Modal forwardRef:
https://github.com/academind/react-complete-guide-course-resources/blob/main/code/08%20Refs%20Portals/08-forwarding-refs/src/components/ResultModal.jsx
Section 8 Working with Refs and Portals
Demo project: Project Manager:
https://github.com/academind/react-complete-guide-course-resources/blob/main/code/09%20Practice%20Project%20-%20Project%20Management/10-finished/src/App.jsx
Demo project: Quiz app:
https://github.com/academind/react-complete-guide-course-resources/blob/main/code/13%20Demo%20Project%20-%20React%20Quiz/08-finished/src/App.jsx
Authentication: https://github.com/academind/react-complete-guide-course-resources/blob/main/code/22%20Authentication/09-finished/frontend/src/components/AuthForm.js
{data && data.errors && (
<ul>
{Object.values(data.errors).map((err) => (
<li key={err}>{err}</li>
))}
</ul>
)}
https://github.com/jonasschmedtmann/ultimate-react-course
https://react.new/ - code sandbox
VS Code extentions:
prettier, eslint, liveserver
Quokka - JavaScript and TypeScript playground in your editor.
1) we should never update the state in render logic
2) component will be re-rendered on:
-state change
-props change
-parent change
-
https://www.youtube.com/watch?v=i-hoSg8iRG0&t=231s
https://github.com/facebook/create-react-app
npx create-react-app my-app
cd my-app
npm starthttps://react-bootstrap.github.io/getting-started/introduction/
npm install react-bootstrap bootstrap
const [items, setItems] = useState([]);
function handleAddItems(item) {
setItems((items) => [...items, item]);
}
function handleDeleteItem(id) {
setItems((items) => items.filter((item) => item.id !== id));
}
function handleToggleItem(id) {
setItems((items) =>
items.map((item) =>
item.id === id ? { ...item, packed: !item.packed } : item
)
);
}
<PackingList
items={items}
onDeleteItem={handleDeleteItem}
onToggleItem={handleToggleItem}
onClearList={handleClearList}
/>
export default function PackingList({
items,
onDeleteItem,
onToggleItem,
onClearList,
}) {...}
<button onClick={() => onDeleteItem(item.id)}>❌</button>
https://i.pravatar.cc/
https://i.pravatar.cc/200
https://i.pravatar.cc/200?u=499476
https://jsonplaceholder.typicode.com/
https://api.adviceslip.com/
https://api.adviceslip.com/advice/1
https://www.omdbapi.com/apikey.aspx
const isWatched = watched.map((movie) => movie.imdbID).includes(selectedId);
const watchedUserRating = watched.find(
(movie) => movie.imdbID === selectedId
)?.userRating;
function handleDeleteWatched(id) {
setWatched((watched) => watched.filter((movie) => movie.imdbID !== id));
}
localStorage.setItem('test', new Array((i * 1024) + 1).join('a'));
// Function to update the object state
const updateObject = () => {
// Update the state by creating a new object with the updated values
setMyObject({
...myObject, // Spread the current state
key2: 'updatedValue' // Update the desired key/value pair
});
};2023-04-03
Node.js
https://github.com/nodejs/help/wiki/Installation
https://www.youtube.com/watch?v=Gx4iBLKLVHk&list=PLwvrYc43l1Mz_c-vV1yVyvFNFZPAleSNE&index=8
1) Download zip from https://nodejs.org/en
2) Unzip and add to .bashrc
export NODE_HOME=/home/encaps/Downloads/node-v18.15.0-linux-x64/
export PATH=$PATH:$NODE_HOME/bin
git config credential.helper storegit config credential.helper 'cache --timeout 36000' # 10 hours
