Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';不要用js cookie获取cookie并做出反应_Javascript_Reactjs_Next.js_Js Cookie - Fatal编程技术网

Javascript Can';不要用js cookie获取cookie并做出反应

Javascript Can';不要用js cookie获取cookie并做出反应,javascript,reactjs,next.js,js-cookie,Javascript,Reactjs,Next.js,Js Cookie,我正在使用Nextjs并尝试制作多语言应用程序。Multi-language工作正常,但当我尝试使用类似“en”的cookie获取语言代码时,会出现错误 这样工作 initialLang = 'en'; setDefaultTranslations({en, fr}); setLanguage('en'); 但当我试图设置initialLang时,cookie不起作用 这种方式不起作用 initialLang = Cookies.get('lang'); setDefaultTranslati

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

这样工作

initialLang = 'en';
setDefaultTranslations({en, fr});
setLanguage('en');
但当我试图设置initialLang时,cookie不起作用

这种方式不起作用

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

可能您没有在ComponentDidMountHook中使用它们:

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

要解决你的问题,你需要后退一步,了解问题所在。关于cookie的主要问题是您需要拆分代码,以便为服务器和客户端读写cookie。js cookie仅适用于客户端。基本上,它在客户端工作,因为它与
document.cookie
一起工作。在next.js SSR中调用
document
时,后端代码无法读取
文档,因为它不存在。如果您想在SSR中读取cookie,您需要从expressjs
请求中捕获cookie并将其传递到react状态。我建议您使用已经解决了这个问题(实现)

Cookies.get('lang')的值是多少?“en”或“fr”。使用点击功能进行更改。
console.log(Cookies.get('lang'))的输出是什么?输出为“字符串”奇怪。。。抱歉,无法理解此问题。我已尝试过,但仍有错误。错误为“未选择lang”。您需要初始化和更新状态,而不是某些变量。我正在尝试此方法和其他方法,但不起作用。真是太神奇了。。。