Express会话-在React应用程序的req之外添加和访问自定义cookie字段

问题描述

我有一个使用快速会话的React应用。标准会话和cookie可以按预期工作,但是我正尝试在req上下文之外添加自定义字段,如下所示。

import session from 'express-session';

export default ({ children }) => {
  
  console.log("session.darkState at top ",session.darkState);//check whats stored when refreshed
  const [darkState,setDarkState] = useState(session.darkState?session.darkState:false);

  function giveMeTheme(darkStateFromAppBar) {
    setDarkState(darkStateFromAppBar);
    session.darkState = darkState;//store in session
    console.log(session.darkState);
  }

我无法使用req上下文,所以我只是在使用会话.....

session.darkState用户导航到另一个页面或刷新时返回未定义。

如何在会话期间存储字段?

我使用mongo存储,当用户登录时,我将所有标准字段(例如resave,saveUninitialized)保存在mongodb中。

解决方法

我找不到在快速会话中添加自定义Cookie的解决方案,因此最终使用react-cookie

import { useCookies } from 'react-cookie';

import NameForm from './NameForm';

function App() {
  const [cookies,setCookie] = useCookies(['name']);

  function onChange(newName) {
    setCookie('name',newName,{ path: '/' });
  }

  return (
    <div>
      <NameForm name={cookies.name} onChange={onChange} />
      {cookies.name && <h1>Hello {cookies.name}!</h1>}
    </div>
  );
}