gpt4 book ai didi

react-native - 如何防止平面列表页眉或页脚在 native react 中重新呈现

转载 作者:行者123 更新时间:2023-12-03 13:44:28 25 4
gpt4 key购买 nike

我在 flatlist 的页脚中放置了一个输入字段,但是当我尝试输入任何内容时,它会自动关闭键盘,因为重新渲染了 flatlist 页脚。

我试图从 Scrollview 嵌套 flatlist 但这带来了警告..

如何阻止页脚被重新渲染?我可以在不嵌套 Scrollview 的 flatlist 的情况下解决这个问题吗?

<FlatList
ListHeaderComponent={() => (
<View style={styles.discountContainer}>
<Text style={[styles.buttonText, { letterSpacing: 3 }]}>
10% DISCOUNT ON 8 COURSES
</Text>
</View>
)}
numColumns={2}
data={data}
renderItem={({ item }) => (
<View>
<SingleProduct item={item} />
</View>
)}
ListFooterComponent={() => (
<View>
<View style={styles.couponContainer}>
<Input
placeholder='Coupon code'
placeholderTextColor='#0a5796'
color='#0a5796'
inputStyle={{
color: '#0a5796',
}}
inputContainerStyle={{
borderBottomWidth: 0,
height: 50,
}}
containerStyle={styles.couponInputContainer}
onChangeText={(value) =>
this.setState({ couponCode: value })
}
value={this.state.couponCode}
/>
{couponLoading ? (
<View style={styles.couponButton}>
<ActivityIndicator />
</View>
) : (
<TouchableOpacity
style={styles.couponButton}
onPress={() => this.codeCheck(couponCode, line_items)}
>
<Text style={styles.buttonText}>Apply Coupon</Text>
</TouchableOpacity>
)}
</View>
</View>
)}
/>

最佳答案

Arrow-Funktions“总是”执行并在内存中创建一个新的引用。这样,如果组件将被执行,它们将始终重新渲染。
出于性能原因,您最好在外部定义您的函数并像这样调用它:

function renderMyItem(){  ...bimbom... yous stuff goes here! }
function renderHeader(){ ...bimbom... yous stuff goes here! }

<Flatlist
renderItem={this.renderMyItem()}
ListHeaderComponent={this.renderHeader()}
...
/>

这里发生了什么?
如果您的组件被加载并保存在内存中,您的两个函数 renderMyItemrenderHeader 将被执行一次。因此,每次调用其中一个函数时,都会调用对内存中保存它们的位置的引用。
在另一种情况下,Arrow-Functions ()=>{...} 在当前上下文中执行,并在每次调用时在 Memory 中生成一个新引用,因为.. 说清楚:你 定义 & 以这种方式调用 函数。

关于react-native - 如何防止平面列表页眉或页脚在 native react 中重新呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61246953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com