質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

2508閲覧

ReactNativeでカルーセルと地図上のマーカーを連動させたい。

miya_1201

総合スコア9

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

1クリップ

投稿2018/08/04 15:35

前提・実現したいこと

ReactNativeでreact-native-mapsとreact-native-snap-carouselを使い、
カルーセルと地図上のマーカーが連動して動くアプリを作っています。
イメージはこのようなアプリです。
CodeDailyを参考にして、そこへreact-native-snap-carouselを導入しましたが、
カルーセルのスクロールとマーカーを連動させることができません。
無知な質問で申し訳ありませんが、アドバイスを頂けると嬉しいです。

該当のソースコード

変更前

render() { return ( <View style={styles.container}> <MapView ref={map => this.map = map} initialRegion={this.state.region} style={styles.container} > {this.state.markers.map((marker, index) => { return ( <MapView.Marker key={index} coordinate={marker.coordinate}> <Animated.View style={[styles.markerWrap]}> <Animated.View style={[styles.ring]} /> <View style={styles.marker} /> </Animated.View> </MapView.Marker> ); })} </MapView> <Animated.ScrollView horizontal scrollEventThrottle={1} showsHorizontalScrollIndicator={false} snapToInterval={CARD_WIDTH} onScroll={Animated.event( [ { nativeEvent: { contentOffset: { x: this.animation, }, }, }, ], { useNativeDriver: true } )} style={styles.scrollView} contentContainerStyle={styles.endPadding} > {this.state.markers.map((marker, index) => ( <View style={styles.card} key={index}> <Image source={marker.image} style={styles.cardImage} resizeMode="cover" /> <View style={styles.textContent}> <Text numberOfLines={1} style={styles.cardtitle}>{marker.title}</Text> <Text numberOfLines={1} style={styles.cardDescription}> {marker.description} </Text> </View> </View> ))} </Animated.ScrollView> </View> ); }

変更後

return ( <View style={styles.container}> <MapView ref={map => this.map = map} initialRegion={this.state.region} style={styles.container} > {markers.map((marker, index) => { const scaleStyle = { transform: [ { scale: interpolations[index].scale, }, ], }; const opacityStyle = { opacity: interpolations[index].opacity, }; return ( <MapView.Marker key={index} coordinate={marker.coordinate}> <Animated.View style={[styles.markerWrap, opacityStyle]}> <Animated.View style={[styles.ring, scaleStyle]} /> <View style={styles.marker} /> </Animated.View> </MapView.Marker> ); })} </MapView> <Animated.View style={[styles.animated]} onScroll={Animated.event( [ { nativeEvent: { contentOffset: { x: this.animation, }, }, }, ], { useNativeDriver: true } )} > <Carousel ref={c => this._slider1Ref = c} data={markers} renderItem={this._renderItem.bind(this)} sliderWidth={sliderWidth} itemWidth={itemWidth} inactiveSlideScale={1} inactiveSlideOpacity={0.5} /> </Animated.View> </View > ); } }

試したこと

Animated.View内のonScrollをCarousel内に書き換えましたが、下記のエラーが発生しました。

onScroll is not function. (In 'onScroll(event)','onScroll' is an instance of AnimatedEvent)

補足情報(FW/ツールのバージョンなど)

  • react: "^16.3.1"
  • react-native: "^0.55.3"
  • react-native-maps: "^0.21.0"
  • react-native-snap-carousel: "^3.7.2"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

JavaScript

1onScroll={Animated.event( 2 [ 3 { 4 nativeEvent: { 5 contentOffset: { 6 x: this.animation, 7 }, 8 }, 9 }, 10 ],

は Animated.Viewのメソッドですが
Carousel(<=今回の外部ライブラリー) のメソッドではありません、エラーメッセージの通りです。
たまたま別件のコンサルティング案件に、似たようなものがあって、記事にまとめました。
よかったら、そっちをお読みください。
リンクを共有します。
https://kokensha.xyz/reactnative/reactnative-connect-map-with-carousel-swipe-animation/

投稿2018/08/13 23:49

kawashimaken

総合スコア51

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miya_1201

2018/08/14 09:57

まさしく、ぴったりの情報をありがとうございます! 参考にして、ちゃんと動作するようになりました! 諦めかけていましたが、助かりました!
kawashimaken

2018/08/14 12:37

お役に立てて嬉しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問