Javascript 在react中使用过多的useState挂钩。我如何重构它?
useState钩子很棒。我主要使用useState钩子初始化某些状态,并且我还将函数传递给子组件以更改状态。然而,我意识到我开始在父页面组件中使用过多的useState钩子。这看起来和感觉都是错误的,因为我开始在父页面组件中使用大约6-10个useState钩子。Javascript 在react中使用过多的useState挂钩。我如何重构它?,javascript,reactjs,react-hooks,react-component,use-state,Javascript,Reactjs,React Hooks,React Component,Use State,useState钩子很棒。我主要使用useState钩子初始化某些状态,并且我还将函数传递给子组件以更改状态。然而,我意识到我开始在父页面组件中使用过多的useState钩子。这看起来和感觉都是错误的,因为我开始在父页面组件中使用大约6-10个useState钩子。 在不显示代码的情况下,有没有更好的方法?也许是更好的实践,或者是更好的重构方式。 谢谢每当您遇到这样的问题时,您应该首先查看是否可以将组件拆分为多个较小的组件。但是,在某些情况下,这不是一个选项。在这种情况下,我建议使用useRed
在不显示代码的情况下,有没有更好的方法?也许是更好的实践,或者是更好的重构方式。
谢谢每当您遇到这样的问题时,您应该首先查看是否可以将组件拆分为多个较小的组件。但是,在某些情况下,这不是一个选项。在这种情况下,我建议使用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);
每当遇到这样的问题时,您应该首先查看是否可以将组件拆分为多个较小的组件。但是,在某些情况下,这不是一个选项。在这种情况下,我建议使用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);
如果您的状态经常以可预测的方式更改,并且状态是相关的(例如,不只是表单中具有不同值的一组输入),那么useReducer可能是一个好方法。这可能会有所帮助。我同意罗伯特·摩尔的观点。我最近重构了一个因各个状态而膨胀的组件,这是一个重大改进。如果您的状态经常以可预测的方式更改,并且状态是相关的(例如,不只是一组具有不同值的表单中的输入),那么useReducer可能是一个不错的选择。这可能会有所帮助。我同意罗伯特·摩尔的观点。我最近重构了一个因各个状态而膨胀的组件,这是一个重大改进。再加上建议的阅读,这看起来简单多了,也更容易管理。谢谢从我的经验来看,它的性能更高。这看起来更简单,也更容易管理。谢谢从我的经验来看,这更有效