[英]React Hooks state not updating
我无法更新我的反应钩子状态。
所以这就是我正在做的(这是一个缩小的相关代码)。
export const Signup = (props) => {
const key= 'randomKey'
const onTextChangeHandler = (text) => {
console.log(key)
setPayloadData[key] = text
console.log(payload)
}
const [payload, setPayloadData] = useState({})
return (
<View>
<TextInput
placeholder={placeHolder}
number={number}
style={[{color: defaultColor, borderColor: defaultColor}, styles.defaultTextInputStyle, templateStyle]}
onChangeText={text => onTextChangeHandler(text)}
value={payload[key]}
/>
</View>
)
}
这里,在上面的代码中,注意
const onTextChangeHandler = (text) => {
console.log(key)
setPayloadData[key] = text
console.log(payload)
}
这里的文本是我输入的任何内容。 密钥的console.log
正在返回randomKey
但
console.log(payload)
出来是未定义的。 谁能帮我弄清楚我做错了什么?
setPayload
是一个函数,而不是一个对象。 您实际做的是为函数分配一个新字段, payload
保持不变,因为负责更新它的函数没有被调用。
setPayloadData[key] = text; // the function object mutation occures
解决方案:只需将其作为函数调用并传递您想要的参数:
setPayloadData({ [key]: text });
示例:使用useState
钩子更新状态
相应地更新道具值和 HOC 组件
import React, { useState } from 'react';
const Signup = (props) => {
const key= 'userKeyboardStrokes'
const onTextChangeHandler = (event) => {
setPayloadData({ [key]: event.target.value })
}
const [payload, setPayloadData] = useState({})
return (
<React.Fragment>
<input
type="text"
onChange={text => onTextChangeHandler(text)}
/>
</React.Fragment>
)
}
module.exports = Signup;
输出结果:
{
userKeyboardStrokes: "user input on object"
}
游乐场示例: https : //stackblitz.com/edit/react-npytvn?file=testing.js
setPayloadData
是一个 setter,它应该是setPayloadData(newData)
来更新状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.