Reactjs 我应该使用全局状态还是React hook';那是当地的州吗?

Reactjs 我应该使用全局状态还是React hook';那是当地的州吗?,reactjs,react-hooks,react-state-management,react-state,Reactjs,React Hooks,React State Management,React State,我有以下代码(使用React钩子): 其中dispatch将有效载荷写入全局状态(与上面useContext中的状态相同) 我的问题是: 我应该使用state.branchMembers(useQuery分派到的全局值)还是简单地调用setBranchMembers并使用上面定义的本地branchMembers状态 有什么区别 在这两种情况下,我是否不再需要定义全局状态(如果对Q1回答否)或不再需要使用useState本地定义任何内容(如果对Q1回答是) 我一直在乱搞我的代码,只是刚刚意识到我有

我有以下代码(使用React钩子):

其中
dispatch
有效载荷
写入全局
状态
(与上面
useContext
中的
状态相同)

我的问题是:

  • 我应该使用
    state.branchMembers
    useQuery
    分派到的全局值)还是简单地调用
    setBranchMembers
    并使用上面定义的本地
    branchMembers
    状态
  • 有什么区别
  • 在这两种情况下,我是否不再需要定义全局状态(如果对Q1回答否)或不再需要使用
    useState
    本地定义任何内容(如果对Q1回答是)
  • 我一直在乱搞我的代码,只是刚刚意识到我有这种困惑。不太熟悉tbh,所以如果这是一个基本问题,也请帮助


    谢谢大家!

    这取决于您是否希望在不同组件之间共享
    分支成员

    由于您已经将
    分支成员
    分派到全局状态,我假设您确实希望共享它。因此,您可以只使用全局状态并删除
    useState

    const { state, dispatch } = useContext(Store);
    ...
    doSomethingWith(state.branchMembers);
    ...
    
    无需将全局状态数据(从上下文)写入本地状态(从
    useState
    )即可使用。您可以立即使用上下文中的数据

    更新

    如果您的
    branchMembers
    依赖于
    branch
    ,则只需继续并将
    branchData
    branchMembers
    一起发送即可。记得把它写在减速机上

    dispatch({
      type: "WRITE_BRANCH_AND_BRANCH_MEMBERS",
      payload: {
        branch: branchId, // or branch or branchData whatever needed
        branchMembers: data.getBranchMembers,
      },
    });
    
    
    // your-reducer.js
    function reducer(state, action) {
      ...
    
      switch (action.type) {
      case "WRITE_BRANCH_AND_BRANCH_MEMBERS": {
        newState = {
          ...state,
          branch: action.payload.branchId,
          branchMembers: action.payload.branchMembers,
        }
        break;
      }
    
      ...
    
      }
    }
    

    这很有道理,谢谢你!但是,如果我需要为每个组件调用相同的端点,但实例化它们的方式不同(例如,我已将组件A中的state.branchMembers作为数组分派到state.branchMembers中,但当我打开组件B时,我需要将state.branchMembers初始化为空数组),那么在这种情况下,我是否应该使用本地状态?谢谢抱歉,但是另外,如果我的状态依赖于其他状态(例如,branchMembers依赖于branch),那么我是否应该使用本地状态?您是否真的在上下文中存储函数?如果我的状态依赖于某个其他状态如果
    状态
    是共享的并且依赖于某个
    其他状态
    ,那么
    其他状态
    也应该与原始
    状态一起共享并存储在上下文中contextnoted关于状态依赖关系!我要记住,在我的生产代码中,这只是测试我后端功能的东西:)在上下文中存储函数是什么意思?我在我的商店里定义了一堆减速机,如果这就是你的意思,它们将有效载荷的输出映射到状态
    
    const { state, dispatch } = useContext(Store);
    ...
    doSomethingWith(state.branchMembers);
    ...
    
    dispatch({
      type: "WRITE_BRANCH_AND_BRANCH_MEMBERS",
      payload: {
        branch: branchId, // or branch or branchData whatever needed
        branchMembers: data.getBranchMembers,
      },
    });
    
    
    // your-reducer.js
    function reducer(state, action) {
      ...
    
      switch (action.type) {
      case "WRITE_BRANCH_AND_BRANCH_MEMBERS": {
        newState = {
          ...state,
          branch: action.payload.branchId,
          branchMembers: action.payload.branchMembers,
        }
        break;
      }
    
      ...
    
      }
    }