Flatlist zIndex not working when using onRefresh prop
オープン
まだ誰も着手していません。
Component: FlatList
Issue: Author Provided Repro
Platform: Android
- 主要言語
- C++
- スター
- 127k
- フォーク
- 25.3k
- 平均マージ
- 1日 23時間
- マージ済み PR(30日)
- 4
説明
Description
Hi, I tried to put an element under Flatlist items. I used zIndex for this purpose. It worked well, until I only added "onRefresh" prop to the flatlist. Therefore the element became above the flatlist items.
React Native version:
System:
OS: Windows 10 10.0.18363
CPU: (8) x64 Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz
Memory: 1.00 GB / 7.81 GB
Binaries:
Node: 12.13.0 - C:\Program Files\nodejs\node.EXE
Yarn: 1.22.10 - C:\Program Files\nodejs\yarn.CMD
npm: 6.12.0 - C:\Program Files\nodejs\npm.CMD
Watchman: Not Found
SDKs:
Android SDK:
API Levels: 23, 25, 27, 28, 29
Build Tools: 28.0.3, 29.0.2, 29.0.3, 30.0.3
System Images: android-28 | Google APIs Intel x86 Atom, android-29 | Google APIs Intel x86 Atom, android-29 | Google Play Intel x86 Atom
Android NDK: Not Found
Windows SDK: Not Found
IDEs:
Android Studio: Version 3.5.0.0 AI-191.8026.42.35.6010548
Visual Studio: Not Found
Languages:
Java: 1.8.0_231 - C:\Program Files\Java\jdk1.8.0_231\bin\javac.EXE
Python: 2.7.17 - C:\Python27\python.EXE
npmPackages:
@react-native-community/cli: Not Found
react: 16.13.1 => 16.13.1
react-native: 0.63.2 => 0.63.2
npmGlobalPackages:
*react-native*: Not Found
Steps To Reproduce
- Case1: Not using onRefresh (The result is Good):

import React from "react";
import { View, FlatList, Text, StyleSheet } from "react-native";
const MyFlatlist = ({ refreshing = false }) => {
const data = [
{ id: '1', name: 'Item 1' },
{ id: '2', name: 'Item 2' },
{ id: '3', name: 'Item 3' },
{ id: '5', name: 'Item 4' },
{ id: '6', name: 'Item 4' },
{ id: '7', name: 'Item 5' },
{ id: '8', name: 'Item 5' },
{ id: '9', name: 'Item 6' },
{ id: '10', name: 'Item 7' }
]
const renderItem = (item) => (
<View style={styles.item}>
<Text style={styles.itemName}>{item.name}</Text>
</View>
)
const onRefresh = () => console.log('refreshing...')
return (
<View style={[styles.container]}>
<FlatList
data={data}
keyExtractor={item => item.id.toString()}
renderItem={({ item }) => renderItem(item)}
style={{ zIndex: 1 }}
refreshing={refreshing}
// onRefresh={onRefresh} <-- This line has caused the issue
/>
<View style={[styles.elementStyle, styles.elementPosition]} />
</View>
)
}
const styles = StyleSheet.create({
container: {
flex: 1,
width: "100%",
height: '100%',
position: 'absolute',
backgroundColor: '#fff'
},
item: {
width: '90%',
height: 100,
backgroundColor: 'green',
alignSelf: 'center',
justifyContent: 'center',
marginVertical: 10
},
itemName: {
textAlign: 'center',
fontWeight: 'bold',
fontSize: 18,
color: '#fff'
},
elementStyle: {
width: 200,
height: 200,
backgroundColor: 'blue'
},
elementPosition: {
position: 'absolute',
left: 0,
bottom: 0,
zIndex: 0,
}
})
export default MyFlatlist
- Case2: Using onRefresh (onRefresh = {onRefresh})

コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
Issue にある FlatList の再現から始め、onRefresh がある場合とない場合の 2 つのケースを比較します。報告された Android セットアップで、FlatList が zIndex と更新動作をどのように処理するかを追跡します。onRefresh を指定した場合に青い要素がリスト項目の下に残り、onRefresh がない場合の既存の順序も引き続き機能すれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript, react-native
- 領域
- mobile
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 38/100