父状态更改时子组件不会更新

特凡蒂娜

我有一个处于其状态的数组的父组件,随着时间的推移,该数组也会被添加。

这是父母。其中发生了很多事情,但我已经将其归结为主要关注的状态、componentShouldUpdate 函数(适用于组件需要执行的所有其他操作)以及同样适用的 show data 方法(我可以确认gaitStats确实如此)正确更新)。

  class GaitMeasure extends Component {
  constructor(props) {
    super(props);

    this.state = {
      grabData: null;
      gaitStats: []
    };
  }  
  shouldComponentUpdate(nextProps) {
   if (this.props.data !== null) {
     if (this.props.data !== nextProps.data) {
       this.showData();
    }
      return false;
    }
   if (this.props.canvas.x !== null) {
     return true;
   } 
  if (this.state.grabData) {
    return true;
  }

  return false;
}

showData() {
....

const avgGait = [...this.state.gaitStats];

avgGait.push(Math.abs(rightX - leftX));

this.setState({
  timeline: this.state.timeline + 3,
  gaitStats: avgGait
});

// render

步态状态,孩子:

class GaitStat extends Component {
  constructor(props) {
    super(props);
  }


  render() {
    return (
      <div>
        Hi
        <p>{this.props.gaitStats}</p>
      </div>
    );
  }
}

据我所知,GaitStatthis.state.gaitStatus在初始渲染后永远不会重新渲染为道具。无论父级重新渲染或更新其状态多少次,道具都保持为空数组。

范德泽

您的 shouldComponentUpdate 方法会阻止类在状态更改时更新。您应该将 shouldComponentUpdate 方法更新为以下内容

shouldComponentUpdate(nextProps, nextState) {
   if(nextState !== this.state){
        return true;
   }
   if (this.props.data !== null) {
     if (this.props.data !== nextProps.data) {
       this.showData();
    }
      return false;
    }
   if (this.props.canvas.x !== null) {
     return true;
   } 
   if (this.state.grabData) {
     return true;
   }

  return false;
}

您可以在此处找到有关 shouldComponentUpdate 的更多信息

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

道具更改时子组件不会更新

来自分类Dev

父状态更改后,组件不会更新

来自分类Dev

子组件更新时更改父状态

来自分类Dev

当父状态在React中更改时停止渲染子组件

来自分类Dev

React:子组件未在父状态更改时呈现

来自分类Dev

当父组件的状态更新时,React 子组件不会更新

来自分类Dev

React JS组件不会在状态更改时更新

来自分类Dev

反应组件不会在父组件 firebase 的状态更改时重新渲染

来自分类Dev

如果父状态值更改,如何更新子组件

来自分类Dev

响应子组件在父状态更改后不更新

来自分类Dev

子组件未因父状态更改而更新

来自分类Dev

当提供程序组件的父状态更改时,为什么不能更新子组件中的值(带有react上下文)?

来自分类Dev

更改 reactJs 父组件中的状态不会更改 react 子组件中的道具

来自分类Dev

React-redux:无法在父状态更改时触发子组件操作

来自分类Dev

组件未在 redux 状态更改时更新

来自分类Dev

状态更改时组件不更新

来自分类Dev

通过其同级触发状态更改时,子组件不会重新呈现

来自分类Dev

父状态更新时更新子组件

来自分类Dev

父状态更新时更新子组件

来自分类Dev

React Native:基于Array.map()的渲染组件不会在状态更改时更新

来自分类Dev

Redux 存储不会在状态更改时更新组件视图

来自分类Dev

父状态不更新子组件

来自分类Dev

React组件不会在状态更改时重新呈现

来自分类Dev

组件不会在状态更改时重新呈现

来自分类Dev

当 prop 更改时,无状态组件不会重新渲染

来自分类Dev

即使使用钩子更新了父状态,子组件也不会重新渲染

来自分类Dev

如何通过 Inputs() 将对象传递给子组件,但在父组件中更改时从不更新输入

来自分类Dev

当父状态更改时,React不呈现子级

来自分类Dev

反应。setState不会更新子组件的状态

Related 相关文章

  1. 1

    道具更改时子组件不会更新

  2. 2

    父状态更改后,组件不会更新

  3. 3

    子组件更新时更改父状态

  4. 4

    当父状态在React中更改时停止渲染子组件

  5. 5

    React:子组件未在父状态更改时呈现

  6. 6

    当父组件的状态更新时,React 子组件不会更新

  7. 7

    React JS组件不会在状态更改时更新

  8. 8

    反应组件不会在父组件 firebase 的状态更改时重新渲染

  9. 9

    如果父状态值更改,如何更新子组件

  10. 10

    响应子组件在父状态更改后不更新

  11. 11

    子组件未因父状态更改而更新

  12. 12

    当提供程序组件的父状态更改时,为什么不能更新子组件中的值(带有react上下文)?

  13. 13

    更改 reactJs 父组件中的状态不会更改 react 子组件中的道具

  14. 14

    React-redux:无法在父状态更改时触发子组件操作

  15. 15

    组件未在 redux 状态更改时更新

  16. 16

    状态更改时组件不更新

  17. 17

    通过其同级触发状态更改时,子组件不会重新呈现

  18. 18

    父状态更新时更新子组件

  19. 19

    父状态更新时更新子组件

  20. 20

    React Native:基于Array.map()的渲染组件不会在状态更改时更新

  21. 21

    Redux 存储不会在状态更改时更新组件视图

  22. 22

    父状态不更新子组件

  23. 23

    React组件不会在状态更改时重新呈现

  24. 24

    组件不会在状态更改时重新呈现

  25. 25

    当 prop 更改时,无状态组件不会重新渲染

  26. 26

    即使使用钩子更新了父状态,子组件也不会重新渲染

  27. 27

    如何通过 Inputs() 将对象传递给子组件,但在父组件中更改时从不更新输入

  28. 28

    当父状态更改时,React不呈现子级

  29. 29

    反应。setState不会更新子组件的状态

热门标签

归档