javascript - 如何将键值对添加到处于功能组件状态的对象中
问题描述
我已经看到了一些关于类组件的计算属性名称的东西,功能组件是否有类似的解决方案?
我的初始状态为 {}。
const [choice, setChoice] = useState({})
当一个按钮点击时,我想动态地添加一个新的 k:v 。
onClick={()=>{
setChoice( props.choice[Key]=[Val] );
}
这似乎不起作用...
我希望添加到选择变量中,如下所示: {"key":"val","key1":"val1",etc..)
我也试过这个:
class Choice {
constructor(key, value){
this.key = key,
this.value = value
}
}
但不确定如何为它调整 onClick。
解决方案
问题来自choice
onClick 函数中的访问器。好的语法应该是(因为选项可以直接作为组件中的变量访问)
onClick={()=>{
setChoice( { ...choice, key:val } );
}
choice
是状态变量,因此可以通过其名称直接访问。无需使用 props.choice 链接到您的组件道具setChoice 应该将原始变量以及新的键/值对作为参数。因此 ...choice 的解构和添加的成员变量 key:value。
编辑:如果您希望您的更新使用 React 方式更合理,您应该使用回调语法。最后你会有
setChoice(choice => { return {...choice, key:val}})
这防止了一些闲聊,来自 React 中状态更新的异步性质。
推荐阅读
- python - 对多类问题执行 K 折交叉验证,评分 = 'f1 or Recall or Precision'
- r - 如何从 ggplot 获取(未设置)轴最小值和最大值?
- r - 使用 keep、discard 和 filter 将数据帧保留在数据帧列表中
- angular - CombineLatest 导致多个流提交
- python - 如何在 Python 中计算很长的数字
- javascript - React Router:单击链接时如何在 URL 中保留参数
- go - 不会在终端上打印任何内容
- if-statement - Power Bi 中多场景的查找值
- python - 如何在日志记录中包含 python django 的启动消息
- angular - 通过实体表示正确使用 subscribe() 到 Observable