Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

reducer.js 599B

1234567891011121314151617181920212223242526
  1. import React, { useReducer } from 'react';
  2. const CHANGE_LOCALE = 'CHANGE_LOCALE';
  3. const mainContext = React.createContext();
  4. const reducer = (state, action) => {
  5. switch (action.type) {
  6. case CHANGE_LOCALE:
  7. return { ...state, locale: action.locale || 'zh' };
  8. default:
  9. return state;
  10. }
  11. };
  12. const ContextProvider = (props) => {
  13. const [state, dispatch] = useReducer(reducer, {
  14. locale: 'zh',
  15. });
  16. return (
  17. <mainContext.Provider value={{ state, dispatch }}>
  18. {props.children}
  19. </mainContext.Provider>
  20. );
  21. };
  22. export { ContextProvider, mainContext, reducer };