我需要知道我的用户是否已连接。为此,我想读取我在服务器端设置的express-session cookie:
第一个
我尝试使用react-cookie
,但即使我复制粘贴了npm react-cookie
docs示例,它也不起作用:
import React from 'react';
import Landing from './Landing';
import Home from './Home';
import Profil from './Profil';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import { instanceOf } from 'prop-types';
import { Cookies } from 'react-cookie';
class App extends React.Component {
static propTypes = {
cookies: instanceOf(Cookies).isRequired
};
constructor(props) {
super(props);
const { cookies } = props;
this.state = {
username: cookies.get('username')
};
}
render() {
console.log(this.state.name)
let homePage = (!this.state.username) ? <Landing/> : <Home/>
return (
<Router>
<div>
<Route exact path='/' component={homePage}></Route>
<Route path='/profil' component={Profil}></Route>
</div>
</Router>
)
}
}
export default App;
奇怪的是,document.cookie
呈现了正确的结果,但我不知道如何处理它:
PHPSESSID=0nv9ic8h7pv2b63lu4v7eg3mop; user_id=21; username=Ugo; SL_G_WPT_TO=fr; SL_GWPT_Show_Hide_tmp=undefined; SL_wptGlobTipTmp=undefined
8条答案
按热度按时间lh80um4z1#
您可以使用
js-cookie
软件包并使用npm install js-cookie --save
命令安装它。文件:https://github.com/js-cookie/js-cookie
国家预防措施:https://www.npmjs.com/package/js-cookie
qhhrdooz2#
如果你只想通过键得到cookie的值,我建议你使用没有任何依赖关系的普通javascript。
在本例中,它在Regex的帮助下通过键“username”获取cookie值。
https://developer.mozilla.org/en-US/docs/Web/API/document/cookie#Example_2_Get_a_sample_cookie_named_test2
i5desfxk3#
我建议使用
universal-cookie
,因为它更容易使用。请注意,Cookie与React无关。它们存储在浏览器中,您可以使用浏览器的默认API来获取Cookie。下面是一个如何使用
universal-cookies
的示例来源:https://www.npmjs.com/package/universal-cookie
sf6xfgos4#
不需要第三方的npm包。你可以使用普通的JS来提取cookie。下面是一个自定义函数:
k3bvogb15#
您也可以在没有任何第三方软件包的情况下使用以下方法,如www.example.com中所述developer.mozilla.org:
0vvn1miw6#
我希望这个函数可以帮助:
ua4mk5z47#
如果您有一个具有“httpOnly:true”属性的Cookie,则无法使用document.cookie访问它。这可能是您无法使用这些方法访问Cookie的原因。
tmb3ates8#