【发布时间】:2019-12-31 08:23:24
【问题描述】:
我在 react native 中使用钩子,setState 有时有效,有时无效。我分享的代码是在到达平面列表末尾时增加计数。我为 count 添加的钩子会打印增量值,但是当我在某处使用它时,它总是使用 10。
import React, { useState, useEffect } from 'react';
export default Trending = (props) => {
const [count, setCount] = useState(10);
function showMore() {
setLoading(true);
setCount(count + 10);
getRecentlyAdded();
}
async function getRecentlyAdded() {
try {
console.log(count); //always prints 10
} catch (e) {
setLoading(false);
}
}
<FlatList
data={dataList}
renderItem={({ item }) => <SwipeList goToDetailed={goToDetailedPageClick} item={item} />}
keyExtractor={item => item.id}
initialNumToRender={10}
onEndReachedThreshold={0.3}
onEndReached={() => {
showMore();
}}
/>
}
它总是在控制台中打印 10 并且值永远不会更新。
我添加了一个钩子来检查计数值
useEffect(() => {
console.log(count); //prints incremented but still uses 10
}, [count])
【问题讨论】:
-
我认为您不能依赖该值,因为它来自关闭。如果您将 console.log 移出 showMore 函数会怎样,所以每次渲染都会调用它? setState 将使用新状态触发重新渲染。
-
FlatList 不使用计数...
标签: javascript reactjs react-native react-hooks