Rewrite Image component as function component (#24893)
This commit is contained in:
		
							parent
							
								
									490ccbf40b
								
							
						
					
					
						commit
						a65d2d1045
					
				| @ -1,33 +0,0 @@ | |||||||
| import React from 'react'; |  | ||||||
| import PropTypes from 'prop-types'; |  | ||||||
| import Blurhash from './blurhash'; |  | ||||||
| import classNames from 'classnames'; |  | ||||||
| 
 |  | ||||||
| export default class Image extends React.PureComponent { |  | ||||||
| 
 |  | ||||||
|   static propTypes = { |  | ||||||
|     src: PropTypes.string, |  | ||||||
|     srcSet: PropTypes.string, |  | ||||||
|     blurhash: PropTypes.string, |  | ||||||
|     className: PropTypes.string, |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   state = { |  | ||||||
|     loaded: false, |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   handleLoad = () => this.setState({ loaded: true }); |  | ||||||
| 
 |  | ||||||
|   render () { |  | ||||||
|     const { src, srcSet, blurhash, className } = this.props; |  | ||||||
|     const { loaded } = this.state; |  | ||||||
| 
 |  | ||||||
|     return ( |  | ||||||
|       <div className={classNames('image', { loaded }, className)} role='presentation'> |  | ||||||
|         {blurhash && <Blurhash hash={blurhash} className='image__preview' />} |  | ||||||
|         <img src={src} srcSet={srcSet} alt='' onLoad={this.handleLoad} /> |  | ||||||
|       </div> |  | ||||||
|     ); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
							
								
								
									
										27
									
								
								app/javascript/mastodon/components/image.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								app/javascript/mastodon/components/image.tsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | |||||||
|  | import React, { useCallback, useState } from 'react'; | ||||||
|  | import Blurhash from './blurhash'; | ||||||
|  | import classNames from 'classnames'; | ||||||
|  | 
 | ||||||
|  | type Props = { | ||||||
|  |   src: string; | ||||||
|  |   srcSet?: string; | ||||||
|  |   blurhash?: string; | ||||||
|  |   className?: string; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export const Image: React.FC<Props> = ({ src, srcSet, blurhash, className }) => { | ||||||
|  |   const [loaded, setLoaded] = useState(false); | ||||||
|  | 
 | ||||||
|  |   const handleLoad = useCallback(() => { | ||||||
|  |     setLoaded(true); | ||||||
|  |   }, [setLoaded]); | ||||||
|  | 
 | ||||||
|  |   return ( | ||||||
|  |     <div className={classNames('image', { loaded }, className)} role='presentation'> | ||||||
|  |       {blurhash && <Blurhash hash={blurhash} className='image__preview' />} | ||||||
|  |       <img src={src} srcSet={srcSet} alt='' onLoad={handleLoad} /> | ||||||
|  |     </div> | ||||||
|  |   ); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export default Image; | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user