reactjs - 如何更新嵌套反应中的深层对象
问题描述
我需要帮助制作一个将更新嵌套对象状态的处理程序。
这是示例代码
const [state, setState] = useState({
firstName: '',
lastName: '',
permanentAddress: {
street: '',
city: ''
},
currentAddress: {
street: '',
city: ''
}
});
const handler = (e) => {
setState({...state, [e.target.name]: e.target.value})
}
然后我导入一个自定义文本字段
export const CustomTextField = (props) => {
const { handler, ...rest } = props
return (
<TextField {...rest} onChange={handler} />
)
}
现在我知道这只会创建一个street
以该值命名的新键,而不是更新已经处于状态的键。我还想过只添加一个指示它是否嵌套的道具,例如
<CustomTextField cat='permanentAddress' name='street' handler={handler} />
然后我将处理程序更改为类似的东西,传递cat
参数
const handler = (cat, e) => {
if (cat) {
const category = {...state[cat]}
category[e.target.name] = e.target.value
setState({...state, [cat]: category})
} else {
//non-nested update here
}
}
有一个更好的方法吗?谢谢!
解决方案
推荐阅读
- css - CSS - 检测用户是否更改了浏览器的默认字体
- google-play - 适用于 AR 的 Google Play 服务与您的设备不兼容
- python - 检查数据框中是否存在值不起作用
- ssh - 如何计算 ssh 反向隧道的最大并发
- haskell - 守卫表达式的模式匹配
- python - 将函数应用于 Pandas DataFrame 中每一行的应用函数的替代方法
- c - C 中无法识别的字符
- vue.js - 有没有办法在 Nuxt 中重新加载页面?
- javascript - 进入一个数组,它是一个没有 for 循环的对象的一部分,javascript
- android-linearlayout - 尝试以编程方式设置线性布局重力时出错