I have two components, let's say componentA
and componentB
. Both component import a .gif
file, let's say image.gif
. image.gif
does not loop, so it should be played once only if it's not updated.
Initially componentA
renders image.gif
but not componentB
. So the image.gif
inside componentA
is played once. When I render image.gif
inside componentB
, image.gif
inside componentA is played again, which is not wanted.
Can it be done? Thanks!
Edit: Some simple codes for reproducing:
Component A
import image as './image.gif'
export default class componentA extends React.PureComponent {
render() {
return (
<div>
<img src={image} />
</div>
);
}
}
Component B
import image as './image.gif'
export default class componentA extends React.PureComponent {
render() {
return (
<div>
{this.props.show ? <img src={image} /> : null}
</div>
);
}
}
App
import componentA from './componentA.react'
import componentB from './componentB.react'
export default class App extends React.Component {
componentWillMount() {
this.setState({
show: false,
});
}
componentDidMount() {
// ...or some moment when the App thinks componentB should update
this.setTimeout(() => {
this.setState({
show: true,
});
}, 4000);
}
render() {
return (
<componentA />
<componentB show={this.state.show} />
);
}
}