我在完成我正在进行的项目的身份验证时遇到了一些问题。 这是我的堆栈:
我遇到的问题是登录工作正常,但我不确定在哪里更新我的 Redux 存储,以便我可以从代码库中的任何组件(不仅仅是 NextJS 页面)访问经过身份验证的用户,因为我知道我可以只使用 getInitialProps 并为此访问 ctx.req 对象。
例如,当我想从 Layout 组件访问用户对象时,就会出现问题,就像这样。
renderNav() {
return (
<div className={`siteNav${this.getAppendValue(this.state.siteNavTheme)}`}>
<div className="siteNavContainer">
<a id="siteLogo" href="/"><img src={`/assets/images/logo-${this.state.siteNavTheme == 'dark' ? 'white' : 'black'}.png`}/></a>
<a className="siteNavLink" onClick={() => this.scrollIntoView(document.getElementById('features'))}>Features</a>
<a className="siteNavLink" onClick={() => this.scrollIntoView(document.getElementById('pricing'))}>Pricing</a>
<a className="siteNavLink">Documentation</a>
<a className="siteNavLink">Blog</a>
<Button href="/dashboard" className="blurple" type="anchor">{this.props.auth.authenticated ? 'Go to dashboard' : 'Sign in'}</Button>
</div>
</div>
);
}
this.props.auth.authenticated 指的是我的 Redux 状态,但即使在我成功登录应用程序后也是假的。 此代码位于我 Next 应用程序中不是页面的组件内,因此 getInitialProps 不是一个选项(据我所知)。
我只想能够从 Redux 中访问用户变量以及经过身份验证的布尔值,以便它能够在任何组件中使用,只要它连接到我的状态。
如果有人可以提供帮助,非常不胜感激。
另外,我很抱歉,因为这是我在这里的第一个问题。 因此,如果您需要任何其他信息,请告诉我。
旁注:如果有任何其他最佳实践比我当前的堆栈更有效,请也向我提出建议。
谢谢!