react-anime icon indicating copy to clipboard operation
react-anime copied to clipboard

Anime not working with components

Open mikael-kalstad opened this issue 6 years ago • 2 comments

I am having some problems with getting the animation to work when wrapping the <Anime> component with other components. Is this not supported? I could not find any relevant info in the documentation.

Example Box component

import React from 'react';

export default function Box() {
    let style = {
        width: '100px',
        height: '100px',
        background: '#71bed6'
    }
    return <div style={style}>Box</div>
}

Index.js

import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";
import Box from "./Box";
import Anime from "react-anime";

function App() {
  return (
    <div>
      <p>With div</p>
      <Anime
        easing="easeInOutElastic"
        duration={1000}
        loop={true}
        translateX={100}
      >
        <div className="box">Box</div>
      </Anime>

      <p>With component</p>
      <Anime
        easing="easeInOutElastic"
        duration={1000}
        loop={true}
        translateX={100}
      >
        <Box />
      </Anime>
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

I have made the example in codesandbox

It would be easier if I could apply the animation to pre-made components instead of changing all of my components with the <Anime> component.

mikael-kalstad avatar Feb 08 '19 08:02 mikael-kalstad

yep. react-anime use ref callback to add dom target to anime engine,so if you use a Component, the anime engine will be passed into a component instance, it's will not work well.

cbbfcd avatar Jun 14 '19 02:06 cbbfcd

for your function, use React.forwardRef

const Box = React.forwardRef((props, ref) => {
  let style = {
    width: "100px",
    height: "100px",
    background: "#ef5858"
  };
  return <div ref={ref} style={style}>Box</div>;
});

export default Box;

and that seems to work

drewhoener avatar Jul 23 '19 07:07 drewhoener