Comics: Recursion

Opublikowano: 16.02.2023 - tagi: Komiks Rysowanie Kod Algorytm

Recursion

JavaScript: Operator ??(podwójny znak zapytania)

Opublikowano: 14.02.2023 - tagi: JavaScript Operator

Operator ??

Potrzebujesz sprawdzić, czy zmienna jest typu null lub undefined i ewentualnie dostarczyć alternatywną wartość? Użyj operatora: ??.

Przykład:

null ?? 'no value'; // no value
undefined ?? 'no value'; // no value

Zasada działania: jeśli wartość po lewej stronie operatora jest null lub undefined to wybierana jest wartość alternatywna (z prawej strony).

W innym przypadku będzie wybierana wartość z lewej strony:

0 ?? 'no value'; // 0
-1 ?? 'no value'; // -1
"" ?? 'no value'; // "" - pusty string
NaN ?? 'vo value'; // NaN
false ?? 'no value'; // false

Git: Jak pobrać informacje o zdalnym repozytorium?

Opublikowano: 09.02.2023 - tagi: Git Komenda

Zdalne repozytorium

Aby pobrać listę o dostępnych, zdalnych repozytoriach wystarczy wywołać komendę:

git remote

Zwykle jest minimum jedno repozytorium:

origin

origin to skrót do zdalnego repozytorium, za pomocą którego można wygodnie posługiwać się w pracy z Git.

Na przykład wysyłanie danych na serwer:

git push origin master

Informacje o zdalnym repozytorium

Jeśli potrzebujesz zdobyć informacje o adresie do zdalnego repozytorium, wywołaj komendę:

git remote -v

Wynik:

origin	https://github.com/user/myrepo (fetch)
origin	https://github.com/user/myrepo (push)

Znacznie bardziej szczegółowe informacje uzyskasz za pomocą komendy:

git remote show [skrót-do-zdalnego-repozytorium]

Czyli jeśli używamy origin:

git remote show origin

React: Jak używać async i await w useEffect?

Opublikowano: 07.02.2023 - tagi: React JavaScript Komponent Hook useEffect Asynchroniczność

Asynchroniczny useEffect?

Obsługa żądań HTTP w useEffect jest prosta:

import { useState, useEffect } from 'react';

const Component = () => {
	const [state, setState] = useState(null);
	
	useEffect(() => {
		fetch('/api/data').then((data) => setState(data));
	}, []);
}

A co jeśli chcesz użyć async/await?

Może tak?:

import { useState, useEffect } from 'react';

const Component = () => {
    const [state, setState] = useState(null);

    useEffect(async () => {
        const data = await fetch('/api/data');
        setState({ data });
    }, []);
}

To zadziała, ale nie powinno się pisać w taki sposób. Dlaczego? useEffect umożliwia wywołanie funkcji, kiedy komponent nie jest już potrzebny. Dzięki niej możemy po sobie posprzątać, o ile jest taka potrzeba.

Załóżmy jednak, że potrzebujesz wywołać funkcję "czyszczącą":

import { useState, useEffect } from 'react';

const Component = () => {
    const [state, setState] = useState(null);

    useEffect(async () => {
        const data = await fetch('/api/data');
        setState({ data });

        return () => {
            ...
        }
    }, []);
}

Problem polega na tym, że z powodu użycia async/await w taki sposób funkcja "czyszcząca" nigdy nie zostanie wywołana!

Jak użyć async/await?

Rozwiązanie tego problem jest bardzo proste. Można to zapisać w taki sposób:

import { useState, useEffect } from 'react';

const Component = () => {
    const [state, setState] = useState(null);

    useEffect(() => {
        const fetchData = async () => {
            const data = await fetch('/api/data');
            setState({ data });
        }
        
        fetchData();
        
        return () => {
            ...
        }
    }, []);
}

Comics: Big picture

Opublikowano: 02.02.2023 - tagi: Komiks Rysowanie Porada

Learn to look at big picture