React Nativeでカメラロールを一覧表示して、選択した画像をアップロードする

React Nativeでカメラロールを一覧表示して、選択した画像をアップロードする

React Nativeでカメラロールを一覧表示して、選択した画像をアップロードする

React Nativeでカメラロールを一覧表示して、選択した画像をアップロードする へのコメントはまだありません

はじめに

React Nativeでカメラロールをいじる方法がわからなかったので調べました。
ついでに、一覧表示した画像から、複数ファイルを選択し、axiosでアップロードするところまでを紹介します。
サーバーサイドはRailsで受け取るソースをのっけておきます。

最後に全ソースを貼り付けます。
説明は部分部分かいつまんで行います。

CameraRollから画像一覧取得

カメラロールをインポートして、
[bash]
import {
CameraRoll,
} from “react-native”
[/bash]

componentDidMountで一覧を取得し、Stateにセットします。
imageSelは画像が選択されたかどうかのフラグです。

[bash]

componentDidMount() {
let svThis = this
CameraRoll.getPhotos({first:25})
.then(function(obj){
console.log(obj)
svThis.storeImages(obj.edges, svThis)
})
}

storeImages(edges,svThis) {
const images = edges.map((asset) => {
//Alert.alert(asset.node.image.uri)
return asset.node.image
})

let imgSel = []
images.map((img) => {
imgSel.push({uri: img.uri, selected: false})
})

svThis.setState({images: images, imageSel: imgSel})
}

[/bash]

画像一覧表示

renderメソッドで一覧表示します。
画像をTouchableHighlightタグの中にセットします。画像が選択されているか否かを selViewという変数にセットして、
選択中の画像にチェックがつくようにします。

[bash]

render() {
let imgs = []
imgs = this.state.images.map((img) => {

let selTrue = false
let selView = null
this.state.imageSel.map((sel) => {
if (sel.uri == img.uri && sel.selected == true){
selTrue = true
}
})

if (selTrue){
selView = (



)
}

return (
this.handleClick(img)}>


{selView}


)
})

return (


{this.state.selPhoto}

About the author:

Related Posts

Leave a comment

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Back to Top