2017-05-30 47 views
1

私はFlatList(つまりScrollView)内に配置したいデータのリストを持っています。リストの多くを表示するためにスクロールしようとするたびに、ScrollViewはリストの一番上を見ることはできません。ネイティブScrollView/FlatListがスクロールしないようにします

私はExpoを使用しています。奇妙なことは、新しいプロジェクトを作成したり、Snackにいくつかのコードをコピー/ペーストしてもスクロールが正常に機能することです。現在のプロジェクトでは、リストをスクロールすることはできません。私はmain.jsファイルに行って、そこにサンプルコードを貼り付けても問題は解決しません。

私のサンプルコードはここにあります:https://snack.expo.io/ryDPtO5-b 私はこの正確なコードを自分のプロジェクトに貼り付けており、期待どおりに動作していません。

バージョン: RN 0.44/ エキスポSDK 17.0.0/ が反応:私のプロジェクトのための16.0.0-alpha.6

私の実際のユースケースは、下部三分のでFlatListコンポーネントを配置することを含みますジョブのリストを表示する画面。これがエラーを発見した場所で、問題をデバッグしようとしたときです。私のプロジェクトで、私はFlatListが含まれているListの子を持つ{flex: 1のスタイルを持つ親Viewを持っている... Listreact-native-elements

EDIT

から来てここで私が実際に使用しようとしていますコードです:

<View style={styles.container}> 
<View style={containerStyles.headerContainerStyle}> 
     <Text style={[textStyles.h2, { textAlign: 'center' }]}> 
      Territory: {this.props.currentTerritory} 
     </Text> 
</View> 
<View style={styles.mapContainer}> 
    <MapView 
    provider="google" 
    onRegionChangeComplete={this.onRegionChangeComplete} 
    region={this.state.region} 
    style={{ flex: 1 }} 
    > 
    {this.renderMapMarkers()} 
    </MapView> 
</View> 
    <Badge containerStyle={styles.badgeStyle}> 
     <Text>Orders Remaining: {this.props.jobsList.length}</Text> 
    </Badge> 
<List containerStyle={{ flex: 1 }}> 
    <FlatList 
    data={this.props.jobsList} 
    keyExtractor={item => item.id} 
    renderItem={this.renderJobs} 
    removeClippedSubviews={false} 
    /> 
</List> 
</View> 

そして、すべての私のスタイル

const styles = StyleSheet.create({ 
container: { 
    flex: 1, 
}, 
mapContainer: { 
    height: 300, 
}, 
badgeStyle: { 
    backgroundColor: 'green', 
    alignSelf: 'center', 
    marginTop: 15, 
    width: 300, 
    height: 35, 
}, 

});

そして最後に、私のRenderItem機能:

renderJobs = ({ item }) => { 
const { fullAddress, pickupTime } = item; 

return (
    <ListItem 
     containerStyle={item.status === 'active' && { backgroundColor: '#7fbf7f' }} 
     title={fullAddress} 
     titleStyle={{ fontSize: 14 }} 
     subtitle={pickupTime} 
     subtitleStyle={{ fontSize: 12, color: 'black' }} 
     onPress={() => this.props.navigation.navigate('jobActions', { job: item })} 
    /> 
); 

}

+0

コードに外部リンクを提供しないでください。代わりにMCVEを作成してください: – CinCout

答えて

0

私は混乱しています - あなたはFlatListScrollViewを使用している - この2つの要素は、(完全に異なるライフサイクルイベントを持っているFlatListをする必要があります個々の行のレンダリング方法とそのキーを定義します。一方、ScrollViewは、子要素がコンポーネントとインラインでレンダリングされることを期待しています)。 List要素が、それは宇宙だ充填された高さは絶対的な親としてだけでなく({flex: 1})属性が必要ですようにかかわらず

、私は問題があなたの構造にあると思うが、それは聞こえるが、Listコンポーネントが持っていない、事前定義されました高さ。

+0

私は質問を明確にするためにいくつかのコードを追加しました... 私は 'FlatList'コンポーネントを使いたいと思っていました。私のアプリで通常の 'ScrollView'をテストしようとしましたが、うまく機能しませんでした。 リストコンポーネントに '{flex:1}'を追加しましたが、それは問題を解決しませんでした... – cruz02148

+0

'react-native-elements'から' List'について読む - それ自体は 'FlatList '、ラッピングコンポーネントではありません。 'List'を削除して' FlatList'を使うか、 'List'が使われるように設計されている' ListItem'コンポーネントを使います。 –

+0

私は両方のソリューションを試しました。私は 'FlatList'を完全に削除し、単に' List'を使い、データセットの各項目に対して 'ListItem'を返すデータセットにマップしました。私は親リスト 'List'を持たない' FlatList'コンポーネントを使ってみたところ、 'Text'コンポーネントの束をレンダリングしましたが、まだエラーがありました。 このソリューションを初めて実装するときは、このブログの記事を参考にしました:https://medium.com/react-native-development/how-to-use-the-flatlist-component-react-native-basics-92c482816fe6 新しいプロジェクトではうまく動作しますが、既存のプロジェクトではうまく動作しません... – cruz02148

0

これをもう少しデバッグした後は、新しいExpoプロジェクトを作成し、すべてのソースコードを新しいプロジェクトにコピー/貼り付け、Githubプロジェクト名を新しい名前に変更し、リモート私の新しいローカルプロジェクトで私のgithub repo(私が名前を変更したもの)に起源。

何らかの理由で、Expoプロジェクトに問題があるようです。新しいプロジェクトの名前を元のプロジェクトの名前に変更しようとしたときに、プロジェクトの実際のNAMEが問題を引き起こしていたように思えましたが、機能しませんでした。まったく同じソースコードを使用して、まったく新しいプロジェクトを行うときにのみ機能しました。

関連する問題