1.5.2 • Published 2 years ago

transition-hook v1.5.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Installation

Install with yarn

yarn add transition-hook

Or install with npm

npm install transition-hook --save

Usage

useTransition

This hook transforms a boolean state into transition stage('from' | 'enter' | 'leave'), and unmount the component after timeout.

const [onOff, setOnOff] = useState(true)
const {stage, shouldMount} = useTransition(onOff, 300) // (state, timeout)

return <div>
  <button onClick={()=>setOnOff(!onOff)}>toggle</button>
  {shouldMount && (
    <p style={{
      transition: '.3s',
      opacity: stage === 'enter' ? 1 : 0
    }}>
      Hey guys, I'm fading
    </p>
  )}
</div>

useSwitchTransition

This hook transforms when the state changes.

const [count, setCount] = useState(0)
const transition = useSwitchTransition(count, 300, 'default') // (state, timeout, mode)

return <div>
  <button onClick={()=>setCount(count+1)}>add</button>
  {transition((state, stage)=>(
    <p style={{
      transition: '.3s',
      opacity: stage === 'enter' ? 1 : 0,
      transform: {
        from: 'translateX(-100%)',
        enter: 'translateX(0%)',
        leave: 'translateX(100%)',
      }[stage]
    }}>{state}</p>
  ))}
</div>

Transition

If you prefer FaCC pattern usage, there it is!

const [onOff, setOnOff] = useState(true)

return <div>
  <button onClick={()=>setOnOff(!onOff)}>toggle</button>
  <Transition state={onOff} timeout={300}>
    {(stage, shouldMount)=>shouldMount &&(
      <p style={{
        transition: '.3s',
        opacity: stage === 'enter' ? 1 : 0
      }}>
        Hey guys, I'm fading
      </p>
    )}
  </Transition>
</div>

SwitchTransition

FaCC pattern version of useSwitchTransition

  <SwitchTransition state={count} timeout={300} mode='default'>
    {(state, stage) => (
      <h1
        style={{
          transition: '.3s',
          opacity: stage === 'enter' ? 1 : 0,
          transform: {
            from: 'translateX(-100%) scale(1.2)',
            enter: 'translateX(0)',
            leave: 'translateX(100%) scale(0)'
          }[stage]
        }}>
        {state} {stage} hello
      </h1>
    )}
  </SwitchTransition>

API Reference

useTransition(state, timeout)

  const {stage, shouldMount} = useTransition(onOff, 300)
ParametersTypeDescription
statebooleanRequired. Your boolean state, which controls animation in and out
timeoutnumberRequired. How long before the animation ends and unmounts
ReturnsTypeDescription
stageStage: from | enter | leaveUse three different stage to perform your animation
shouldMountbooleanWhether the component should be mounted

useSwitchTransition(state, timeout, mode)

  const transition = useSwitchTransition(onOff, 300, 'default')
ParametersTypeDescription
stateanyRequired. Your state, which triggers animation
timeoutnumberRequired. How long before the animation ends and unmounts
modedefault | out-in | in-outOptional. Default to default mode

Transition

  <Transition state={onOff} timeout={300}>
    {(stage, shouldMount) => shouldMount && <div style={{...}}>hello</div>}
  </Transition>
PropsTypeDescription
statebooleanRequired. Your boolean state, which controls animation in and out
timeoutnumberRequired. How long before the animation ends and unmounts
children(stage: Stage, shouldMount: boolean)=>React.ReactNodeRequired. FaCC pattern.

SwitchTransition

  <SwitchTransition state={count} timeout={300}>
    {(state, stage) => <div style={{...}}>{state} hello</div>}
  </SwitchTransition>
PropsTypeDescription
stateanyRequired. Your boolean state, which controls animation in and out
timeoutnumberRequired. How long before the animation ends and unmounts
modedefault | out-in | in-outOptional. Default to default mode
children(state: any, stage: Stage)=>React.ReactNodeRequired. FaCC pattern.

ListTransition

  <ListTransition list={list} timeout={300}>
    {(item, stage)=><h1 style={...}>{item}</h1>}
  </ListTransition>
PropsTypeDescription
listArray<any>Required. Your array state
timeoutnumberRequired. How long before the animation ends and unmounts
children(item: any, stage: Stage)=>React.ReactNodeRequired. FaCC pattern.

Also see these amazing hooks

RepoIntro
🧻 infinite-scroll-hookScroll down to load more never been so easy!
☄️ transition-hookAn extremely light-weight react transition animation hook

License

MIT

1.5.2

2 years ago

1.5.1

2 years ago

1.5.0

2 years ago

1.4.0

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago

0.0.1

2 years ago