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 / withData.js
Last active October 28, 2020 12:27
REACT HOC - паттерн js - способ для повторного использования логики
class ItemList extends Component { ... };
const widthData = (View) => {
return class extends Component {
componentDidMount() {
console.log(this.props); // children: item => {…} ,getData: async () => {…}, onItemListClicked: id => {…}, pageId: 1
}
render() {
return <ItemList {...this.props} />;
}
@TimraWork
TimraWork / object_functions.js
Created October 7, 2020 06:09
JS (ооп) - работа с объектами - Object.assign, Object.values, Object.entries, delete, Object.observe
// 1. Скопировать объект - Object.assign
Object.assign({}, event);
// 2. Скопировать и добавить свойство в объект (копию объекта - не мутация) - Object.assign
Object.assign({}, event, {id: localNewEventId});
// или
Object.assign(
{},
event, // старый объект
@TimraWork
TimraWork / js_date_moment.js
Last active October 6, 2020 12:17
JS - Работа с датой (библиотека moment.js и new Date)
// 1 Вывести продолжительность поездки
// В колонке «Time» отображается время и продолжительность нахождения в точке маршрута (разность между окончанием и началом события). Время маршрута отображается в формате начало — окончание (например, «10:30 — 11:00»). Формат продолжительности нахождения в точке маршрута зависит от длительности:
// Менее часа: минуты (например «23M»);
// Менее суток: часы минуты (например «02H 44M»);
// Более суток: дни часы минуты (например «01D 02H 30M»);
const getDurationDiff = (countTime, label) => {
return countTime ? countTime + label : ``;
};
@TimraWork
TimraWork / add_update_delete_item_array.js
Created October 2, 2020 07:36
JS - (ООП) добавление, обновление, удаление элемента из массива
// обновление
[ ...this._events.slice(0, index),
update,
...this._events.slice(index + 1)
];
// добавление
[
update,
@TimraWork
TimraWork / arr.js
Created July 12, 2020 11:15
es6 - стрелочные функции, подготовка к курсу es6
// Сумма элементов массива
ar.reduce((a, b) => (a + b))
@TimraWork
TimraWork / collections.js
Last active May 13, 2023 18:28
HTML academy - курс по javascript
// Чтобы можно было работать с массивом через foreach, нужно отрезать кусочек через функцию slice(0, countElArr)
var pinsCount = Math.min(offers.length, MAX_PINS_COUNT);
offers.slice(0, pinsCount).forEach(function (item, i) {
//...
});
@TimraWork
TimraWork / app.js
Last active May 23, 2020 18:09
React - оптимизация - общая api для единичного поста
// было
this.SwapiService.getPost(postId) // Функция Меняется
// стало
getData(postId)
@TimraWork
TimraWork / pattern.js
Last active May 22, 2020 09:44
React - ErrorBoundry компонент (this.props.children)
// app.js - вызов компонента
<ErrorBoundry>
<Row left={postsList} right={postItem}></Row>
</ErrorBoundry>
// app.js - создадим компонент класс
class ErrorBoundry extends Component {
state = {
hasError: false,
};
@TimraWork
TimraWork / pattern.js
Created May 22, 2020 09:33
React оптимизация - свойство компонента this.props.children();
// app.js
<Posts>
{(item) =>// Это и есть свойство потомок
`${item.title} <span class="date">(${item.date})</span>`
}
</Posts>
// post.js
const label = this.props.children(item); // Вытащим данное свойство
@TimraWork
TimraWork / pattern.js
Last active May 22, 2020 09:23
React оптимизация - кусок jsx разметки перенести в переменную - js паттерн
// изночально было так ...
render(){
<Posts renderItem={({ title, date }) => `${title} <span class="date">(${date})</span>`}/>
}
// перевод в переменную
render(){
const postsList = (
<Posts renderItem={({ title, date }) => `${title} <span class="date">(${date})</span>`}/>
);