WishMeLz

生活其实很有趣

RN-useReducer-Context

app页面定义-->中间文件(LoginContext)-->使用的页面

中间文件:
import React from 'react';
export default React.createContext();

app页面:
先定义:
const initiaState = {
  logined: false,
};
function reducer(prevState, action) {
  let clone = JSON.parse(JSON.stringify(prevState));
  switch (action.type) {
    case 'login':
      clone.logined = true;
      break;
    case 'loginout':
      clone.logined = false;
      break;
    default:
      break;
  }
  return clone;
}
// 这里开始是引入Context
import LoginContext from './components/LoginContext';
//在组件内使用
const [state, dispatch] = useReducer(reducer, initiaState);
<LoginContext.Provider value={{state,dispatch}}></ LoginContext>

使用的页面:
import LoginContext from './LoginContext';
//组件内
 const context = useContext(LoginContext);
 context.dispatch({type: 'login'});