由于在渲染方法中调用了 onClick 方法,因此出现“无法在现有状态转换期间更新”错误

安德鲁

我的意图是在handleClick单击相应元素时触发该方法,以便activefalse之间切换状态属性true如果在渲染内部调用是导致问题的原因,那么handleClick在单击该元素时如何调用该方法?

import React, { Component } from 'react';
import styled from 'styled-components';

const NestedProperty = styled.div`
  margin-left: 2rem;
`;

const ParentContainer = styled.div`
  display: flex;
  flex-direction: column;
`;

const NestedContainer = styled.div`
  display: flex;
  flex-direction: column;
`;

class SideMenuContainer extends Component {
  constructor(props) {
    super(props);
    this.state = {
        active: false
    };
    this.handleClick = this.handleClick.bind(this)
  }

  handleClick(){
    console.log("toggle click!")
    this.setState({active : !this.state.active});
  }

  render() {
    if (this.state.active == true){
      return (
        <ParentContainer>
          <p onClick={() => this.props.handleClick()}>{this.props.parentName}</p>
          <NestedContainer>

            {this.props.properties.map(propertyElement => {
              return (
                <NestedProperty onClick={() => { this.props.changeInfoList(propertyElement.name, propertyElement.data_type, propertyElement.app_keys.join(', '))}} >
                  {propertyElement.name}
                </NestedProperty>
              );
            })}
          </NestedContainer>
        </ParentContainer>
      );    
    }

    else {
      return (
        <ParentContainer>
          <p onClick={this.handleClick()}>{this.props.parentName}</p>
        </ParentContainer>
      );
    }

  }
}

export default SideMenuContainer;
奥马尔

这将修复它。

 else {
      return (
        <ParentContainer>
          <p onClick={() => this.handleClick()}>{this.props.parentName}</p>
        </ParentContainer>
      );
    }

你原来有这个。

 else {
      return (
        <ParentContainer>
          <p onClick={this.handleClick()}>{this.props.parentName}</p>
        </ParentContainer>
      );
    }

如果你打算这样做,你需要排除 () 并只做this.handleClick.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React中的“无法在现有状态转换期间更新”错误

在无状态组件中的现有状态转换期间无法更新

收到警告:渲染内部现有状态转换期间无法更新

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

React Native警告:在现有状态转换期间(例如在`render`中)无法更新

反应警告:在现有状态转换期间(例如在`render`中)无法更新

ReactJS:无法在现有状态转换期间更新(例如在 `render` 内)。Render 方法应该是 props 和 state 的纯函数

警告:无法在现有状态转换期间更新(例如在 `render` 或其他组件的构造函数中)

setState(...):无法在现有状态转换期间更新(例如在 `render` 或其他组件的构造函数中)

ReactNative:在现有状态转换期间(例如在`render`中)不能更新。渲染方法应该是道具和状态的纯函数

反应错误:“无法在现有状态转换期间更新”

在React中现有的状态转换错误期间无法更新

未调用OnClick方法

ReactJS-渲染期间调用按钮onClick

警告:setState(...):在现有状态转换期间无法更新

ReactJS | 在现有状态转换期间无法更新

警告:setState(…):在现有状态转换期间无法更新

通过ReactJS中的onClick方法调用组件

从Viewholder调用布局方法中的onClick

React Native警告:在现有状态转换(例如使用渲染)期间无法更新

为什么存在此错误:“不变违反:在现有状态转换期间无法更新”

ReactJS中的onClick方法

onClick函数未调用方法

停止后续的onclick方法调用

Android onClick 方法错误

无法链接OnClick方法

onClick事件调用原型方法,“ this”有问题

非法状态异常OnClick方法

无法在现有状态转换期间更新 - 无论何时更改特定状态