react-native中如何保存和显示和图像?
Posted
技术标签:
【中文标题】react-native中如何保存和显示和图像?【英文标题】:How to save and display and image in react-native? 【发布时间】:2020-01-09 12:43:00 【问题描述】:我有一个关于 react-native 的问题。我正在使用一个名为 "react-native-image-picker" 的模块来选择图像并将其显示在我的应用程序上。
现在我想要将它存储在某个地方(数据库或本地存储),当我再次打开应用程序时,我选择的图像应该在那里。但我不知道什么是最好的选择。
我已经尝试阅读诸如 react-native-fs 和 fetch-blob 之类的东西,但我猜它对我没有帮助。
最好的选择是什么?
谢谢。
【问题讨论】:
将结果值保存到本地存储并检索存储在存储中的数据。 【参考方案1】:首先,根据条件渲染视图。例如,如果图像可用,则只需显示图像,否则显示 TouchableOpacity,这将有助于选择图片:
import React, Component from React;
import View, TouchableOpacity, Text, Image from 'react-native';
import ImagePicker from 'react-native-image-picker';
import AsyncStorage from '@react-native-community/async-storage';
class App extends Component
constructor(props)
super(props);
this.state =
isImageAvailable: false,
profilePic: null
componentDidMount = () =>
this.getImage();
getImage = async () =>
const profilePic = await AsyncStorage.getItem("profilePic");
if (profilePic)
this.setState(
isImageAvailable: true,
profilePic: JSON.parse(profilePic)
);
selectProfilePic = () =>
const options =
title: 'Select Avatar',
storageOptions:
skipBackup: true,
path: 'images',
,
;
ImagePicker.showImagePicker(options, (response) =>
console.log('Response = ', response);
if (response.didCancel)
console.log('User cancelled image picker');
else if (response.error)
console.log('ImagePicker Error: ', response.error);
else if (response.customButton)
console.log('User tapped custom button: ', response.customButton);
else
const source = uri: response.uri ;
// You can also display the image using data:
// const source = uri: 'data:image/jpeg;base64,' + response.data ;
AsyncStorage.setItem("profilePic", JSON.stringify(source));
this.setState(
profilePic: source,
isImageAvailable: true
);
);
render()
return (
<View>
this.state.isImageAvailable && (
<Image source=this.state.profilePic style= width: 200, height: 200 />
)
!this.state.isImageAvailable && (
<TouchableOpacity onPress=this.selectProfilePic>
<Text>Choose Profile Pic</Text>
</TouchableOpacity>
)
</View>
)
希望对您有所帮助。
【讨论】:
嘿,为什么你将await
与 AsyncStorage 一起使用?
因为是异步函数。【参考方案2】:
您可以使用 realmdb 作为 Asyncstorage 的替代品。
【讨论】:
以上是关于react-native中如何保存和显示和图像?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Expo 在 react-native 上共享图像和文件
如何显示从 fetch() 方法返回的图像 - react-native
如何从 R 中的 animate 函数中保存 GIF 图像?
React-native:图像未显示在 android 设备中;但在模拟器中完美显示