Tenho feito muitos experimentos com os dois Reagir e Cloudinary nos últimos seis meses e tem sido incrível: estou aprendendo muito e, ao mesmo tempo, recuperando a ambição e a sede que tinha quando era um jovem desenvolvedor. O React tem sido uma revelação: uma estrutura JavaScript avançada que não complica demais as coisas e me incentivou a aprender mais sobre ESNext e Babel. O Cloudinary me permite fazer coisas incríveis com imagens e mídia, como criar Filtros semelhantes aos do Instagram, transformar imagense muito mais, tudo isso modificando o URL da imagem. O Cloudinary fornece APIs para várias linguagens diferentes (Node.js, Python, PHP, etc.), mas deu um passo adiante e agora oferece um conjunto de componentes React para usar em seu aplicativo React!
Instalando cloudinary-react
O conjunto de componentes React do Cloudinary está disponível por meio do cloudinary-react nome:
yarn add cloudinary-react # or `npm install cloudinary-react`
Use npm install ou yarn add para obter esses componentes.
Componentes do Cloudinary
O Cloudinary fornece CloudinaryContext, Image, Video, e Transformation componentes. Eles estão disponíveis em seu aplicativo usando require ou import:
import { Image, Video, Transformation, CloudinaryContext } from 'cloudinary-react';
Vamos dar uma olhada em cada tipo de componente!
Imagem
O Image é o mais simples dos componentes, permitindo todos os tipos de transformações:
<!-- basic usage --> <Image cloudName="david-wash-blog" publicId="ringo" width="600" crop="scale" alt="Ringo" /> <!-- with a simple effect --> <Image publicId="ringo" effect="cartoonify:25:50" />
O código acima é transpilado para:
<img alt="Ringo" width="600" src="http://res.cloudinary.com/david-wash-blog/image/upload/c_scale,w_600/ringo">
Observe que o senhor pode adicionar todos os atributos usuais para cada imagem, como alt, title, e assim por diante.
Vídeo
O Video também é muito simples e funciona como o senhor imagina:
<Video cloudName="david-wash-blog" publicId="sample-video" width="800" controls />
Todas as transformações também podem ser aplicadas a vídeos!
Transformação
Image Os componentes podem conter qualquer número de Transformation para modificar a imagem de saída:
<!-- Rotate and trim the image, then add text -->
<Image cloudName="david-wash-blog" publicId="ringo">
<Transformation angle="-45"/>
<Transformation effect="trim" angle="45" crop="scale" width="600">
<Transformation overlay="text:Arial_100:Hello" />
</Transformation>
</Image>
Documentação de transformação do Cloudinary é uma excelente referência para a incrível variedade de transformações. Se o senhor tiver alguma dúvida sobre como a transformação deve ser adicionada como um atributo, clique no botão Node.js nos exemplos da documentação do Cloudinary para ver quais devem ser suas chaves e valores.
Contexto do Cloudinary
O CloudinaryContext permite o agrupamento inteligente de mídia e efeitos a serem aplicados ao seu conteúdo filho, seja ele Image, Video, Transformation componentes:
<CloudinaryContext cloudName="david-wash-blog" effect="art:aurora" width="300"> <Image publicId="ringo"></Image> <Image publicId="coffee"></Image> <!-- ... --> </CloudinaryContext>
Com o exemplo acima, todos os Image têm o efeito designado por seu pai CloudinaryContextuma maneira incrível de reduzir a repetição de código e manter o JSX organizado! O senhor pode até mesmo empilhar CloudinaryContext componentes:
<CloudinaryContext cloudName="david-wash-blog">
<Image publicId="ringo" />
<Image publicId="coffee" />
<CloudinaryContext fetchFormat="auto" quality="auto">
<Image publicId="ringo" />
<Image publicId="coffee" />
</CloudinaryContext>
</CloudinaryContext>
Criando um experimento rápido no estilo do Instagram
Uma das razões pelas quais eu amo o React (e mais especificamente create-react-app) é que ele me permite criar um aplicativo dinâmico muito rapidamente. Como o Cloudinary oferece algumas dezenas de filtros artísticos, achei que seria divertido criar um aplicativo muito simples, semelhante ao Instagram, usando a biblioteca React do Cloudinary. Então, minutos depois, eu tinha algo:
class App extends Component {
state = { width: 600, filter: null };
filters = [
'al_dente', 'audrey', 'aurora', 'daguerre', 'eucalyptus', 'fes', 'frost',
'hairspray', 'hokusai', 'incognito', 'linen', 'peacock', 'primavera',
'quartz', 'red_rock', 'refresh', 'sizzle', 'sonnet', 'ukulele', 'zorro'
];
onPreviewClick(event) {
this.setState({ filter: event.target.src });
}
render() {
return (
<div>
<CloudinaryContext cloudName="david-wash-blog">
<div className="wrapper">
<div className="left">
<Image
publicId="ringo"
width="{this.state.width}">
{ this.state.filter && (<Transformation effect={`art:${this.state.filter}`} />) }
</Image>
</div>
<div className="right">
{this.filters.map(filter => (
<div className="preview" key={filter}>
<Image publicId="ringo" width="{this.state.width}" onClick={this.onPreviewClick}>
<Transformation effect={`art:${filter}`} />
</Image>
<span>{filter}</span>
</div>
))}
</div>
</div>
</CloudinaryContext>
</div>
);
}
}
O resultado é semelhante:

Cloudinary fornece APIs e auxiliares para todas as principais linguagens de programação e agora fornece recursos de biblioteca jQuery e React para facilitar a codificação de seus aplicativos ricos em mídia. Especialmente úteis são as bibliotecas Transformation e CloudinaryContext que permitem que seu código permaneça limpo e breve. cloudinary-react é apenas mais um motivo incrível para procurar o Cloudinary para todas as suas necessidades de mídia!