Skip to content

Instantly share code, notes, and snippets.

View TimraWork's full-sized avatar
🤚
Hi) Му name is Elmira

Timra TimraWork

🤚
Hi) Му name is Elmira
View GitHub Profile
@TimraWork
TimraWork / loader.js
Created May 5, 2020 10:42
React - простейший лоадер ( preloader ) - индикатор загрузки
state = {
post: {},
loading: true, // 1. Добавим в стейт
};
onPostLoaded = (post) => {
this.setState({
post,
loading: false, // 2. После загрузки постов обновим стейт
});
@TimraWork
TimraWork / regex.js
Created May 5, 2020 06:30
Регулярные выражения - поиск через регулярное выражение ( match, regexp )
const str = 'https://swapi.co/api/planets/12/'; // искомая строка
const id = str.match( /\/([0-9]*)\/$/ )[1];
console.log(id); // 12
@TimraWork
TimraWork / class.js
Created May 2, 2020 12:44
React - создание и вызов javascript класса (class) в компонентах на примере ф-и fetch для работы с api
// swapi-service.js
export default class SwapiService {
_apiBase = 'https://timra.ru/timra/wp-json/wp/v2';
async getResource(url) {
const res = await fetch(`${this._apiBase}${url}`);
return await res.json();
}
getAllPosts() {
@TimraWork
TimraWork / raw_html.js
Created May 2, 2020 12:07
React функция dangerouslySetInnerHTML - raw html - аналог v-html - вывод контента содержащего html
<div dangerouslySetInnerHTML = {{ __html: excerpt }} ></div>
@TimraWork
TimraWork / js_fetch_errors.js
Created April 29, 2020 03:52
FETCH + ASYNC await обработка ошибок
const getResource = async (url) => {
const res = await fetch(url);
if (!res.ok) {
throw new Error(`Could not fetch ${url}` + `, received ${res.status}`); //Could not fetch Error: Could not fetch https://swapi.dev/api/people/1asdfasdfdas/, received 404
at getResource (index.js:5)
}
const body = await res.json();
return body;
@TimraWork
TimraWork / fetch.js
Last active April 29, 2020 03:29
Simple FETCH + ASYNC function + AWAIT
//ф-я js fetch
const getResource = async (url) => {
const res = await fetch(url);
const body = await res.json();
return body;
};
getResource('https://swapi.dev/api/people/1/').then((body) => {
console.log(body); // Результат {name: "Luke Skywalker", height: "172", mass: "77", hair_color: "blond", skin_color: "fair", …}
});
@TimraWork
TimraWork / if_short.js
Last active May 2, 2020 12:42
React - вариант сокращенной записи if на примере добавления класса элементу
// let clazz = 'btn';
// if (el.name === filtered) {
// clazz = 'btn btn-info';
// } else {
// clazz = 'btn btn-outline-secondary';
// }
const clazzs = filtered === el.name ? 'btn-info' : 'btn-outline-secondary';
<button className={`btn ${clazzs}`} > {el.label} </button>
@TimraWork
TimraWork / map.js
Created April 28, 2020 07:58
Filter - простейшая функция map для распечатки массива (как vue v-for)
buttons = [
{ name: 'all', label: 'All' },
{ name: 'active', label: 'Active' },
{ name: 'done', label: 'Done' },
];
render() {
const elements = this.buttons.map((el) => {
return <button key={el.name}>{el.name}</button>;
});
@TimraWork
TimraWork / switch_case.js
Last active April 28, 2020 06:00
React - оператор switch case - на примере фильтра по таскам
// item-status-filter.js
<button onClick={() => this.props.onFilter('all')} > All </button>
<button onClick={() => this.props.onFilter('done')} > Active </button>
<button onClick={() => this.props.onFilter('active')}> Done </button>
// app.js
state = {
todoData: [
{ label: 'NOT DONE1', important: false, done: false, id: 1 },
{ label: 'NOT DONE2', important: false, done: false, id: 2 }
@TimraWork
TimraWork / search_react.js
Last active April 27, 2020 12:47
REACT - поиск элемента ( props, filter + indexOf + toLowerCase, e.target.value, setState )
// компонент ребенок search-panel.js - должен передать текст поиска, который мы вводим в инпут
<input type="text" onChange={(e) => this.props.onFilter(e.target.value.trim())} />
// app.js - родитель
state = {
todoData: [
...
],
query: '',
};