无法使用js-cookie获取cookie并做出反应

JavaScript React.js

卡卡西Near

2020-03-27

我正在使用Nextjs并尝试制作多语言应用程序。多语言工作正常,但是当我尝试使用“ en”之类的Cookie获取语言代码时,出现错误。

这样工作;

initialLang = 'en';
setDefaultTranslations({en, fr});
setLanguage('en');

但是,当我尝试设置带有cookie的initialLang无效时。

这种方式不起作用

initialLang = Cookies.get('lang');
setDefaultTranslations({en, fr});
setLanguage(initialLang);

第3808篇《无法使用js-cookie获取cookie并做出反应》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

2个回答
西门 2020.03.27

要解决您的问题,您需要退后一步并理解问题。关于cookie的主要问题是您需要拆分代码以读取和写入服务器和客户端的cookie。js-cookie仅适用于客户端。基本上,它可以在客户端上使用,因为它可以与一起使用document.cookie当它调用documentnext.js SSR时,后端代码无法读取,document因为它不存在。如果您想在SSR中读取cookie,则需要从expressjs中捕获它request并传递到react状态。我建议您使用https://github.com/andreizanik/cookies-next已经解决了这个问题(实现)

Mandy 2020.03.27

可能您没有在componentDidMount挂钩中使用它们:

componentDidMount() {
  // get cookie
  // set state to update the language
}

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android