Skip to content

Instantly share code, notes, and snippets.

View EduVencovsky's full-sized avatar
🎯
Focusing

Eduardo Vencovsky EduVencovsky

🎯
Focusing
View GitHub Profile
@EduVencovsky
EduVencovsky / storage.js
Last active March 28, 2019 19:58
React Native AsyncStorage Implementation
import { AsyncStorage } from 'react-native' // change this to @react-native-community/async-storage when this issue is solved https://github.com/react-native-community/react-native-async-storage/issues/14
export default Storage = {
async getItem(itemKey) {
let result = {
key: itemKey,
value: null,
error: null,
}
@EduVencovsky
EduVencovsky / useArray.js
Last active April 18, 2019 15:23
React Hook for using arrays
import { useReducer } from 'react'
function arrayReducer(array, action) {
switch (action.type) {
case 'push':
return [...array, action.value]
case 'pushAll':
return [...array, ...action.value]
case 'deleteByIndex':
let deleteByIndex = array.filter((x, i) => i != action.index)
@EduVencovsky
EduVencovsky / styles.css
Created May 22, 2019 15:41
CSS for making ul and li open and close (dropdown menu)
.li {
max-height: 0px;
transition: max-height 0.35s ease-out;
}
.ul {
overflow: hidden;
}
.ul.opened .li {
max-height: 50px;
@EduVencovsky
EduVencovsky / useInterval.js
Last active July 13, 2019 14:22
React Hook for using setInterval
// https://overreacted.io/making-setinterval-declarative-with-react-hooks/
import { useEffect, useRef } from 'react'
function useInterval(callback, delay) {
const savedCallback = useRef()
// Remember the latest callback.
useEffect(() => {
savedCallback.current = callback
}, [callback])
@EduVencovsky
EduVencovsky / useTimeout.js
Created July 13, 2019 14:25
React hook for setTimeout
import { useEffect, useRef, useState } from 'react'
// The callback should setState so it will re trigger the timeout
function useTimeout(callback, delay) {
const savedCallback = useRef()
const [callBackCleanUp, setCallBackCleanUp] = useState(null)
// Remember the latest callback.
useEffect(() => {
savedCallback.current = callback
}, [callback])
import { useState, useEffect } from 'react'
import Realm from '../database/migrations'
function reducer(action, { realm, name, queryObjects }) {
switch (action.type) {
case 'create':
return new Promise((resolve, reject) => {
try {
realm.write(() => {
resolve(realm.create(name, action.data))
import { useState } from 'react'
export default function useToggle(defaultValue){
const [state, setState] = useState(defaultValue)
const toggle = (value = null) => {
if(value == null)
setState(!state)
else
setState(!!value)
@EduVencovsky
EduVencovsky / index.html
Created October 22, 2019 18:52
CSS Scale Transition
<button id="open">open</button>
<div class="box scale">
<h1>
hey
</h1>
</div>
@EduVencovsky
EduVencovsky / useNavigationFocusChanged.js
Last active November 8, 2019 01:08
React Hooks to listen to navigation didFocus event
import { useState, useEffect, useRef } from 'react'
export const useNavigationFocusChanged = (navigation, event) => {
const [focus, setFocus] = useState(false)
const listener = useRef(null)
useEffect(() => {
const changeFocus = () => {
setFocus(prev => !prev)
}
listener.current = navigation.addListener(event, changeFocus)
@EduVencovsky
EduVencovsky / RotateView.js
Created November 13, 2019 01:15
Component for creating a rotating View in React Native
import React, { useEffect, useState } from 'react'
import PropTypes from 'prop-types'
import { Animated, Easing } from 'react-native'
const RotateView = ({ rotate, degree, initialDegree, duration, children, ...otherProps }) => {
const [rotateValue] = useState(new Animated.Value(0))
useEffect(() => {
const toValue = rotate ? 1 : 0