gpt4 book ai didi

reactjs - history.push() 重定向后的调用函数

转载 作者:行者123 更新时间:2023-12-05 06:55:15 26 4
gpt4 key购买 nike

我有一个功能可以检查用户是否在 componentDidMount 上登录,如果有 session ,则更改登录按钮以注销。

问题:

我尝试使用 ComponentdidUpdate 但由于该组件已经安装并且我无法更新状态,它不会刷新,因此我的登录按钮保持为登录按钮。

componentDidMount() {
Axios.get(config.ServerURL + "/user", {withCredentials: true}).then(result => {
console.log("component mounted:",result.data)
if (result.data) {
this.setState({isLoggedIn: true});
}
}).catch(error => {
console.log({message: error.response});
})
}

我有一个根据状态改变的按钮:isLoggedIn:

<div className={"App-login-button"}>
{!this.state.isLoggedIn && <Link to={"/login"}>
<AwesomeButton type="primary" title={"Login"}>Login</AwesomeButton>
</Link>}

{this.state.isLoggedIn && <Link to={"/logout"}>
<AwesomeButton type="primary" title={"logout"} onPress={this.handleLogOut}>logout</AwesomeButton>
</Link>}

</div>

当我从我的登录组件登录时(例如:localhost:3000/login)

handleSubmit = (event) => {
Axios.post(Config.ServerURL + '/auth/login',
{email: this.state.email, password: this.state.password},
{
withCredentials: true

}).then(result => {
if (result.data.business) {
this.props.history.push({pathname: '/business', state: {email: result.data.email}});
}
useHistory.push('/', );

}).catch(error => {
console.log(error);
//console.log(error.response.data.info)
});

}

对于用户

exports.find = (req, res) => {
res.send(req.user);
}

我愿意:

将 state.isLoggedIn 更改为 true

再次运行获取用户检查。

最佳答案

我变了

useHistory.push('/');

回到

this.props.history.push('/');
this.props.history.go();

go 强制刷新页面,允许组件重新呈现。我不介意增加的计算问题,所以这对我有用。

关于reactjs - history.push() 重定向后的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65415557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com