Javascript 如何使用useState钩子一次更新多个状态?

Javascript 如何使用useState钩子一次更新多个状态?,javascript,react-native,use-state,react-functional-component,Javascript,React Native,Use State,React Functional Component,在功能组件中,我们使用useState,而不是classComponents的this.setState。但据我所知,使用useState一次只能设置一个状态,而setState允许您一次设置多个状态(例如,this.setState({a1:true,a2:false})) 这是否意味着如果您想使用useState同时设置两个状态,您会得到双重重新渲染,这是无效的?有没有办法解决这个问题?好吧,但你也可以认为,在大多数情况下,你只是按照相关的方式对状态进行分组,而不是有一个大的这个。状态有一堆

在功能组件中,我们使用useState,而不是classComponents的this.setState。但据我所知,使用useState一次只能设置一个状态,而setState允许您一次设置多个状态(例如,this.setState({a1:true,a2:false}))


这是否意味着如果您想使用useState同时设置两个状态,您会得到双重重新渲染,这是无效的?有没有办法解决这个问题?

好吧,但你也可以认为,在大多数情况下,你只是按照相关的方式对状态进行分组,而不是有一个大的
这个。状态
有一堆属性,彼此之间没有关联,这在某种程度上也很糟糕

所以通常情况下,您不会每次都更新两个状态,如果您这样做,很可能您希望将这些状态混合到一个状态中

假设你有这两种状态:

const [state1, setState1] = useState(...);
const [state2, setState2] = useState(...);
并且您总是在您的
onChange
函数(或其他)中执行以下操作:

您应该将它们混合到一个状态中,如下所示:

const [state, setState] = useState({ state1: ..., state: ...}); // or it could be other thing than an object...

好吧,这是对的,但你也可以认为,在大多数情况下,你只是以相关的方式对状态进行分组,而不是使用一个大的
this.state
和一堆属性,而这些属性彼此不相关,这在某种程度上也很糟糕

所以通常情况下,您不会每次都更新两个状态,如果您这样做,很可能您希望将这些状态混合到一个状态中

假设你有这两种状态:

const [state1, setState1] = useState(...);
const [state2, setState2] = useState(...);
并且您总是在您的
onChange
函数(或其他)中执行以下操作:

您应该将它们混合到一个状态中,如下所示:

const [state, setState] = useState({ state1: ..., state: ...}); // or it could be other thing than an object...