簡體   English   中英

React hook useContext 重新渲染組件

[英]React hook useContext re-render component

我正在使用帶有 useContext 的全局鈎子來存儲注冊的用戶信息。 我不知道為什么 useContext 兩次渲染我的組件並且第二次未定義狀態。 Provider 是全局的,在 index.js 中

有什么想法可以防止兩次渲染組件嗎?

商店.js:

import React, { createContext, useReducer } from 'react';

const initialState = {
  accessToken: '',
  expirationDate: '',
  fullName: ''
};
const store = createContext(initialState);
const { Provider } = store;

const StateProvider = ({ children }) => {
const [state, dispatch] = useReducer((state, action) => {
  const { type, payload } = action;

  switch (type) {
    case 'login':
      const newState = {
        ...state,
        ...payload
      };
      return newState;
    default:
      throw new Error();
    }
  }, initialState);

  return <Provider value={{ state, dispatch }}>{children}</Provider>;
};

export { store, StateProvider };

當我使用 useContext(store) 我得到這個結果:

使用上下文結果

不要默認錯誤

始終在您的減速器中返回狀態,而不是未定義。 這是我看到的第一個問題。

default:
  throw new Error();
}

default:
  return state;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM