我有一个用例,我想列出水平卡片。 我用横向ScrollView实现了它。
然后,对于每张卡,我想实现拉动刷新模式,以便更新卡中显示的数据。 因此我使用RefreshControl组件作为ScrollView的属性。
问题是在iOS上,当我切换到另一张卡而不是第一张时,我看不到RefreshControl组件(参见下面的gif)。
代码
<ScrollView
contentContainerStyle={styles.container}
horizontal
pagingEnabled
showsHorizontalScrollIndicator={false}
directionalLockEnabled
contentInset={{top: 1}}
refreshControl={
<RefreshControl
refreshing={this.state.isRefreshing}
onRefresh={this._onRefresh.bind(this)}
/>
}
>
<Text style={styles.card}>First child</Text>
<Text style={styles.card}>Second child</Text>
</ScrollView>
以下演示中的完整代码
演示 https://rnplay.org/apps/sRXpEw
修改
它看起来与代码的这一部分有关:Libraries/Components/ScrollView/ScrollView.js#L523-L529
答案 0 :(得分:1)
据我所知,这是refreshControl
的预期行为 - 只应该是一个。
这适用于您的应用吗?
<ScrollView
contentContainerStyle={styles.container}
horizontal
pagingEnabled
showsHorizontalScrollIndicator={false}
directionalLockEnabled
contentInset={{top: 1}}
>
<ScrollView
refreshControl={
<RefreshControl
refreshing={this.state.isRefreshing}
onRefresh={this._onRefresh.bind(this)}
/>
}><Text style={styles.card}>First child</Text></ScrollView>
<ScrollView
refreshControl={
<RefreshControl
refreshing={this.state.isRefreshing}
onRefresh={this._onRefresh.bind(this)}
/>
}><Text style={styles.card}>Second child</Text></ScrollView>
</ScrollView>