首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应钩,每个状态值一个钩子?

反应钩,每个状态值一个钩子?
EN

Stack Overflow用户
提问于 2019-09-27 15:53:22
回答 3查看 510关注 0票数 3

我对Hooks相当陌生,并且非常有兴趣在未来的项目/工作中使用它。我很好奇地想了解更多关于使用钩子用于具有许多不同状态的组件的最佳实践。据我所知,对于每个状态值,您将使用useState钩子。

例如,我们有一个具有此状态的基于类的组件:

代码语言:javascript
复制
this.state = {
   state1: 0,
   state2: '',
   state3: false,
   state4: [],
   state5: {},
   state6: null
}

如果我用钩子转换这个..。最佳实践是对每个状态使用useState (总共6 useState)还是有更好的方法?

谢谢大家!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-27 16:11:30

就我的选择而言,我认为最佳做法是:

代码语言:javascript
复制
   const [state1, setState1] = useState(0)
   const [state2, setState2] = useState('')
   const [state3, setState3] = useState(false)
   const [state4, setState4] = useState([])
   const [state5, setState5] = useState({})

因为要控制的每个州本地都是差异类型。你可以更灵活地控制每个变量。

但如果你想处理你的案子,你可以这样做:

代码语言:javascript
复制
   const [state, setState] = useState({
       state1: 0,
       state2: ''
       state3: false
   })

当更新state1和state2时:

代码语言:javascript
复制
   setState({
      ...state,
      state1: 1,
      state2: "yada"
   })
票数 3
EN

Stack Overflow用户

发布于 2019-09-27 17:05:34

前面的所有答案都是正确的,但您也应该考虑如何以及何时状态更新。例如,如果你有

代码语言:javascript
复制
const [a, setA] = React.useState('a')
const [b, setB] = React.useState('b')

如果总是同时调用setAsetB,那么可以将其重构为

代码语言:javascript
复制
const [ab, setAB] = React.useState({a: 'a', b: 'b})

因此,更容易在一起进行更新。

否则,拥有多个状态是可以的。

下面是文档的一篇更详细的文章

票数 1
EN

Stack Overflow用户

发布于 2019-09-27 15:59:00

完全取决于你。在我看来你可以

代码语言:javascript
复制
const [state1, updateState1] = useState(0);

重复一遍你的建议。

将所有状态放在一个对象中,并根据需要进行更新。

代码语言:javascript
复制
const [state, updateState] = useState({state1: 0, state2:''});

在本例中,要更新状态对象(例如state1)中的任何项,可以执行以下操作

代码语言:javascript
复制
updateState({...state, state1: "new value"})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58137848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档