反应中使用了过多的useState挂钩。我该如何重构?

时间:2020-07-01 16:46:02

标签: javascript reactjs react-hooks react-component use-state

useState挂钩很棒。我主要使用useState挂钩初始化某些状态,并且还将函数传递给子组件以更改状态。但是,我意识到我开始在父页面组件中使用太多useState挂钩。这看起来和感觉上都是错误的,因为我开始在父页面组件中使用大约6-10个useState挂钩
如果不显示代码,是否有更好的方法呢?也许是更好的做法,或者是重构的更好方法。
谢谢

1 个答案:

答案 0 :(得分:2)

每当您遇到这样的问题时,您应该首先查看是否可以将您的组件拆分为多个较小的组件。但是,在某些情况下,这不是一种选择。在这些情况下,我会建议使用 useReducer。

// before

const {cache, setCache } = useState({});
const {posts, setPosts } = useState({});
const {loading, setLoading } = useState(false);

// Would become after refactor

const initialState = {
  cache: {},
  posts:{},
  loading: false
}

const [state, dispatch] = useReducer(reducer, initialState);