Skip to content

Instantly share code, notes, and snippets.

View andrzejewsky's full-sized avatar

Patryk Andrzejewski andrzejewsky

  • Wrocław
View GitHub Profile
import React, { useState, useReducer, useContext } from "react";
import ReactDOM from "react-dom";
import "./styles.css";
const reducer = (todos, action) => {
switch (action.type) {
case "ADD_TODO":
const newTodo = { id: todos.length + 1, name: action.payload };
return [...todos, newTodo];
case "REMOVE_TODO":
import React, { useState } from "react";
import ReactDOM from "react-dom";
import "./styles.css";
const Header = ({ children, count }) => (
<h1>
{children} ({count})
</h1>
);
@andrzejewsky
andrzejewsky / todolist2.jsx
Created March 31, 2019 00:01
Todolist (with useContext and useReducer)
import React, { useState, useCallback, useContext, useReducer } from "react";
import ReactDOM from "react-dom";
import "./styles.css";
const TodoContext = React.createContext();
const reducer = (state, action) => {
switch (action.type) {
case "ADD_TODO":
return [...state, action.payload];
@andrzejewsky
andrzejewsky / todolist1.jsx
Last active March 31, 2019 00:01
Regular Todolist (without useContext and useReducer)
import React, { useState, useCallback } from "react";
import ReactDOM from "react-dom";
import "./styles.css";
const AddTodo = ({ onClickAdd }) => {
const [todo, setTodo] = useState({ name: "", checked: false });
const handleChangeTodo = evt => {
setTodo({ name: evt.target.value, checked: false });
};
@andrzejewsky
andrzejewsky / useSliding.js
Last active March 2, 2019 18:26
Netflix slider sliding hook
import { useState, useRef, useEffect } from 'react'
const PADDINGS = 110;
const useSliding = (elementWidth, countElements) => {
const containerRef = useRef(null);
const [containerWidth, setContainerWidth] = useState(0);
const [distance, setDistance] = useState(0);
const [totalInViewport, setTotalInViewport] = useState(0)
const [viewed, setViewed] = useState(0);
@andrzejewsky
andrzejewsky / useSizeElement.js
Last active March 2, 2019 18:26
Netflix slider size element hook
import { useState, useRef, useEffect } from 'react'
const useSizeElement = () => {
const elementRef = useRef(null);
const [width, setWidth] = useState(0);
useEffect(() => {
setWidth(elementRef.current.clientWidth);
}, [elementRef.current]);
@andrzejewsky
andrzejewsky / Item.js
Created March 2, 2019 13:36
Netflix slider item
import React from 'react';
import cx from 'classnames';
import SliderContext from './context'
import ShowDetailsButton from './ShowDetailsButton'
import Mark from './Mark'
import './Item.scss'
const Item = ({ movie }) => (
<SliderContext.Consumer>
{({ onSelectSlide, currentSlide, elementRef }) => {
@andrzejewsky
andrzejewsky / Slider.js
Created March 2, 2019 13:35
Netflix Slider.js
import React, { useState } from 'react';
import cx from 'classnames';
import SliderContext from './context'
import Content from './Content'
import SlideButton from './SlideButton'
import SliderWrapper from './SliderWrapper'
import useSliding from './useSliding'
import useSizeElement from './useSizeElement'
import './Slider.scss'
@andrzejewsky
andrzejewsky / content.scss
Created March 2, 2019 13:29
Neftlic slider content styles
.content {
margin-top: 40px;
height: 300px;
position: relative;
}
.background {
display: flex;
height: 100%;
}
@andrzejewsky
andrzejewsky / content.html
Created March 2, 2019 13:29
Netflix slider content
<div class="content">
<div class="background">
<div class="left">left</div>
<div class="right">right</div>
</div>
<div class="content-container">content here...</div>
</div>