umijs/hox

存用户信息,应该用对象,还是不同的字段呢?

tom-and-jary opened this issue · 2 comments

方案1:
(用户信息的每个字段,分别使用一次useState)

const useUser = () => {
    const [id, setId] = useState('');
    const [token, setToken] = useState('');
    const [username, setUsername] = useState('');
    const [email, setEmail] = useState('');
    const [points, setPoints] = useState('');
    const [avatar, setAvatar] = useState('');

..省略号...

方案2
(把用户信息放在一个对象里,只用了一次useState)

const useUser = () => {
    const [user, setuser] = useState(
        {
          id:'',
          token:'',
          username:'',
          email:'',
          points:'',
          avatar:'',
        }
    );
 

..省略号...

想问问,哪个方案更好, 应该怎么判断自己用哪个方案呢?

如果用第一种,字段太多了, 会不会用hox 会导致性能低下, 浪费很多内容呢?

谢谢

建议方案 2,同一类的 state 放一起就好了。

这个问题和hox是没有关系的,完全是React Hooks的用法问题,而且这两种方案都有一定的合理性,至于使用那种方案更好我觉得需要看具体的业务逻辑,不过大部分情况下方案2就可以了

关于性能上的考虑,要综合很多因素来看,单纯看这里的state定义其实性能开销的区别几乎可以忽略不计