当前位置: 首页 > 知识库问答 >
问题:

react和react cookie中出现“超过最大更新深度”错误

傅增
2023-03-14

我按照这个教程在React with Redux中实现了一个简单的登录表单:https://js lancer . com/blog/2017/04/27/a-simple-log in-flow-with-React-and-Redux/

一切正常,但当我添加cookie时,我收到错误:

警告:在现有状态转换期间(例如在渲染中)无法更新。渲染方法应该是道具和状态的纯粹函数。

以及:

未捕获的不变违规:超过了最大更新深度。当组件重复调用组件内部的setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。

我做了一些调试,如果我删除更改={e =

知道为什么下面的代码不起作用吗?

import { connect } from 'react-redux';
import { withCookies } from 'react-cookie'

class LoginForm extends Component {

  constructor(props) {
    super(props);
    this.state = {
      username: '',
      password: ''
    };
  }

  render() {
    let {username, password} = this.state;
    let { cookies, allCookies, isLoginPending, isLoginSuccess, loginError} = this.props;
    cookies.set('username', 'Ross', { path: '/', secure: true, httpOnly: true});
    console.log(cookies.get('username'));
    return (
      <form name="loginForm" onSubmit={this.onSubmit}>
        <div className="form-group-collection">
          <div className="form-group">
            <label>Username:</label>
            <input type="text" name="username" onChange={e => this.setState({username: e.target.value})} value={username}/>
          </div>
          <div className="form-group">
            <label>Password:</label>
            <input type="password" name="password" onChange={e => this.setState({password: e.target.value})} value={password}/>
          </div>
        </div>
      </form>
    )
  }
}

const mapStateToProps = (state) => {
  return {
    isLoginPending: state.isLoginPending,
    isLoginSuccess: state.isLoginSuccess,
    loginError: state.loginError,
  };
}

export default withCookies(connect(mapStateToProps, null)(LoginForm));``` 

共有1个答案

宋弘壮
2023-03-14

我的猜测是,因为你的组件它连接到cookie HoC,然后你在渲染方法中调用cookies.set,它每次都在更新自己,创建一个无限循环。请尝试将cookies.set移动到组件迪迪蒙特

 类似资料:
  • 我在React中运行我的应用程序时收到一个错误。这个错误有很多问题,但我不知道如何解决它。当我按下链接时,它会指向登录组件。“http://localhost:3000/login” 这是我在网站上得到的错误: “已超出最大更新深度。当组件重复调用组件内部的 setState 时,可能会发生这种情况“组件将更新”或“组件更新”。React 限制了嵌套更新的数量,以防止无限循环。 这是我的登录页面:

  • 在我的React应用程序中,我收到以下错误:“错误:超过了最大更新深度。当组件重复调用组件内部的setState时,可能会发生这种情况。React限制嵌套更新的数量,以防止无限循环”。一旦for循环完成,我就改变了状态。我不知道我做错了什么。任何帮助都将不胜感激。

  • 我遇到一个错误: 超过了最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,会发生这种情况。React限制嵌套更新的数量,以防止无限循环。 我的代码是: 我有另一个使用路由器切换页面的组件,以及一个包含登录页面的邮件组件。

  • 我有以下组件:- 我得到了错误:- 我怀疑它必须对多次调用setState的Submit按钮(onClick)做一些事情,但是我似乎无法解决问题。 因此,我有以下问题:- 如何修复点击()? 我想点击开始游戏按钮,然后触发 并 这样我就可以填满套牌,套牌1和套牌2。有没有办法做到这一点?目前,我已经创建了一个这取决于正在填充的甲板,这是用钩子做的正确方法吗? 谢谢你的帮助和时间!

  • 我正在使用react with redux构建带有后端passport jwt的登录身份验证系统。 登录之前工作正常,我已经添加了私人路由到一些需要身份验证的路由。 我得到的错误: src/actions/authoctions.js SRC/减速机/AuthReducers.js App.js src/组件/login.js privaterout.js组件 请帮我解决这个错误。

  • 超过了最大更新深度。当组件重复调用组件WillUpdate或组件DidUpdate中的setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。 这是bossinfo.js 这是user.redux.js 你为什么一直报告这个问题?这是指向错误的方向吗?寻求帮助