我在反应本机中使用钩子,setState有时有效,有时不起作用。我共享的代码是在到达平面列表末尾时增加计数。我为计数打印添加的钩子增加了值,但是当我在某处使用它时,它总是使用 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])
如果状态的值保持不变,则setState
或useState
不会更新或呈现。希望这能给你一点提示。