我有一个状态:
const [userName, setUserName] = useState('');
接下来,我将 TextInput
设为:
<TextInput style={styles.value}
keyboardType={'default'}
placeholder={'Your Name'}
value={userName}
editable={true}
onChangeText={(value) => {
setUserName(value)
}} />
按钮的 onPress
事件我正在调用这个函数:
function saveButtonPressed() {
alert("The Value of Name is " + userName);
}
问题是我可以在文本字段中看到 vvalue 得到更新,但在 alert
中我仍然看到 ''
,如果我第二次再次保存 coe,它会显示更新后的值。
答案 0 :(得分:0)
它们不显示当前值的原因与您的函数形成闭包有关。即使 userName 的值发生变化,它仍然是一个常量,并且由于更新它的函数在第一次重新渲染时仍然具有范围,更新后的值不会显示。相反,当范围在闭包之外发生变化时,也就是您在第二次重新渲染中获得更新的值时。
第一个链接对此有解决方案。 第二个链接有更多关于钩子的信息。
这些应该可以详细回答您的问题。 https://stackoverflow.com/a/58877875/9745240 https://stackoverflow.com/a/54069332/9745240
阅读有关 closures 的文章应该会对您有所帮助。