【发布时间】:2021-07-30 13:33:23
【问题描述】:
我在 react native 上有这段代码,每次按下按钮后我都会将计数器增加 1
function App() {
const [counter,setCounter]=useState(0);
return (
<View>
<Button title="hello" onPress={()=>
{setCounter(counter+1);console.log("display
counter in console" ,counter)}}>
</Button>
{counter%2==1 ? <Text> display counter in UI</Text>
: null }
<View>
<Text> thank you for clicking the button </Text>
</View>
</View>
)
}
第一次单击后,计数器等于 0,控制台显示 0 而不是 1,因此 JSX 组件不会显示。 我知道 useState 是异步的,但是如果显示 JSX 取决于实时更新状态,如何解决它。
更新:JSX 似乎在预期时显示,但我想知道为什么 console.log 不会实时更新?我的意思是为什么 console.log 在应该显示 1 时显示 0
【问题讨论】:
-
您需要同步更新做什么?单击按钮后,您的组件应立即以新状态重新渲染,但是 console.log 调用不会,因为它是在先前的渲染中调用的。
-
@Altareos 为什么console.log 不会实时更新?我的意思是,如果实际值为 1,为什么 console.log 显示 0 ?
标签: javascript reactjs react-native react-hooks