react-native-autosize-image
Version:
react-native image width auto width or height computation
100 lines (71 loc) • 3.9 kB
Markdown
# react-native-autosize-image
Inspired by [vivaxy/react-native-auto-height-image](https://github.com/vivaxy/react-native-auto-height-image)
[](https://www.npmjs.com/package/react-native-autosize-image)
[](https://www.npmjs.com/package/react-native-autosize-image)
[](./LICENSE)
[](https://conventionalcommits.org)
[](https://opencollective.com/react-native-autosize-image)
This component provides you a simple way to load a remote image and automatically set `Image` crossAxisSize to the image dimension which fits the provided mainAxisSize.
ReactNative `Image` component needs users to set both `mainAxisSize` and `crossAxisSize` props.
## Installation
`yarn add react-native-autosize-image`
`npm install react-native-autosize-image`
## Usage
Use local or remote files:
```js
import React, { Component } from 'react';
import AutoImage from 'react-native-autosize-image';
import image from 'gallifrey-falls.png';
export default class Demo extends Component {
render() {
return (
<View>
<AutoImage
mainAxisSize={100}
mainAxis='horizontal'
source={image}
/>
<AutoImage
mainAxisSize={100}
mainAxis='vertical'
source={{uri: 'http://placehold.it/350x150'}}
/>
</View>
);
}
}
```
You can even specify fallback images for when the source fails to load:
```js
import React, { Component } from 'react';
import AutoImage from 'react-native-autosize-image';
import image from 'gallifrey-falls.png';
export default class Demo extends Component {
render() {
return (
<AutoImage
mainAxisSize={100}
source={{uri: 'https://vivaxy.github.io/404'}}
fallbackSource={image}
/>
);
}
}
```
### Props
| name | type | isRequired | default | description |
| --- | --- | --- | --- | --- |
| `mainAxisSize` | number | ✔ | N/A | image mainAxisSize to fit |
| `mainAxis` | 'horizontal'|'vertical' | ✔ | N/A | main axis |
| `maxCrossAxisSize` | number | ✖ | `Infinity` | image max crossAxisSize |
| `source` | number or object | ✔ | N/A | local (i.e. require/import) or remote image ({uri: '...'}) |
| `fallbackSource` | number or object | ✖ | N/A | local (i.e. require/import) or remote image ({uri: '...'}) |
| `onCrossAxisSizeChange` | func | ✖ | `(crossAxisSize) => {}` | called when updating image crossAxisSize, the argument `crossAxisSize` might be `0` |
| `animated` | bool | ✖ | `false` | Use `Animated.Image` instead of `Image` |
Other image props except `resizeMode` are accepted.
## Change Log
[Change log](./CHANGELOG.md)
## Contributing
[Contributing](./CONTRIBUTING.md)
## Licence
[MIT](./LICENSE)