代码之家  ›  专栏  ›  技术社区  ›  Picci

当react组件禁用时,componentWillUnmount方法未调用

  •  0
  • Picci  · 技术社区  · 4 年前

    componentWillUnmount

    我希望看到 组件将卸载 Here a stackblitz reproducing the case (本次闪电战还包括一个类似的案例 组件将卸载

    这是相关代码

    export class ChildFlipped extends React.Component {
      render() {
        return (
          <div>
            {this.props.name} - No of clicks ({this.props.numberOfClicks})
          </div>
        );
      }
    }
    
    export class ParentFlips extends React.Component {
      constructor(props: any) {
        super(props);
        this.state = {
          clickCounter: 0,
        };
      }
      render() {
        return (
          <div>
            <button
              onClick={() => this.updateState()}
            >
              Click me
            </button>
            {this.state.clickCounter % 2 ? (
              <ChildFlipped
                name={"Even"}
                numberOfClicks={this.state.clickCounter}
              ></ChildFlipped>
            ) : (
              <ChildFlipped
                name={"Odd"}
                numberOfClicks={this.state.clickCounter}
              ></ChildFlipped>
            )}
          </div>
        );
      }
      updateState() {
        this.setState((prevState, _props) => ({
          clickCounter: prevState.clickCounter + 1,
        }));
      }
    }
    
    0 回复  |  直到 4 年前
        1
  •  1
  •   Oblosys    4 年前

    它不会开火,因为组件仍处于安装状态。关于和解,条件表达式

    this.state.clickCounter % 2
    ? <ChildFlipped name={"Even"} numberOfClicks={this.state.clickCounter}/>
    : <ChildFlipped name={"Odd"} numberOfClicks={this.state.clickCounter}/>
    

    无法与

    <ChildFlipped name={this.state.clickCounter % 2? "Even" : "Odd"} 
                  numberOfClicks={this.state.clickCounter}/>
    

    ChildFlipped

    his.state.clickCounter % 2
    ? <ChildFlipped key='even' name={"Even"} numberOfClicks={this.state.clickCounter}/>
    : <ChildFlipped key='odd' name={"Odd"} numberOfClicks={this.state.clickCounter}/>
    

    为了试验生命周期方法,我构建了一个 React lifecycle visualizer ( StackBlitz

    推荐文章