react-native - TextInput 的 onChangeText 正在更新状态,但正在检索旧值
问题描述
我有一个状态:
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 时它会显示更新的值。
解决方案
它们不显示当前值的原因与您的函数形成闭包有关。即使 userName 的值发生变化,它仍然是一个 const 并且由于更新它的函数在第一次重新渲染时仍然具有范围,因此更新的值不会显示。相反,当范围在闭包之外发生变化时,即在第二次重新渲染中获得更新的值时。
第一个链接对此有解决方案。第二个链接有更多关于钩子的信息。
这些应该详细回答您的问题。https://stackoverflow.com/a/58877875/9745240 https://stackoverflow.com/a/54069332/9745240
阅读关于闭包的文章应该会对您有所帮助。
推荐阅读
- excel - 在 Excel 上按 id 列的行
- php - 日期未在控制台中显示为字符串
- javascript - 关闭一个 div - javascript 不工作
- python - Python 只有整数、切片...和整数或布尔数组是有效的索引
- html - 列排序引导程序
- python - 当我尝试接受用户输入时,我不断收到以下错误 - ValueError: invalid literal for int() with base 10: ''
- python - 创建 pd.read_csv 对象后替换值
- android - 如何使用 RecyclerView 在 ListView 中更改播放/暂停音频图标?
- postgresql - 在 plpgsql 中包含 IF.. ELSE 条件并生成动态查询
- r - 计算分组百分比