父组件状态发生变化时向子组件发送props,子组件的状态始终落后

波浪指标

这是父组件的代码。它有一个按钮,也包含一个子组件。

我的问题是:React 是否能够发送更改prop的值state如果没有,那么当状态发生变化时我需要做什么来发送道具?

  • 虽然组件在状态改变后会重新渲染,但我不得不点击按钮两次才能看到文本的变化。

如何使其与父组件中的状态更改同步发生?

父组件的代码:

class ParentComponent extends Component {
        constructor(props) {
            super(props);
            this.state = {
                toBeDrafted: false
            };
            this.handleButtonClick = this.handleButtonClick.bind(this);
        }

        handleButtonClick() {
            this.setState({
                toBeDrafted: true
            });
        }

        render() {
            return (
                <React.Fragment>
                    <button onClick={this.handleButtonClick}>Click Me</button>
                    <ChildComponent valueOfButton={this.state.toBeDrafted} />
                </React.Fragment>
            );
        }
    }

这是子组件的代码

class ChildComponent extends Component {
    constructor(props) {
        super(props);
        this.state = {
            toBeUpdated: false
        };
    }

    componentWillReceiveProps() {
        if (this.props.valueOfButton === true) {
            this.setState({
                toBeUpdated: !this.state.toBeUpdated
            });
        }
    }

    render() {
        return (
            <React.Fragment>
                <p>
                    The Button has been
                    {
                        this.state.toBeUpdated === true
                        ? "clicked"
                        : "not clicked"
                    }
                </p>
            </React.Fragment>
        );
    }
}
尼基尔·帕塔尼亚

当我们点击 Click me 按钮时handleButtonClick(),它会在里面调用setState()

在这次调用中,页面被重新呈现。这导致传递给子组件的 props 值发生变化。因此,当您使用setState传递给子组件的 props更改父组件的状态时,也会更改。

更新您更新的问题:

componentWillReceiveProps() {
   this.setState({
      toBeUpdated: !this.state.toBeUpdated
    });
  }

删除 if 条件,因为它是导致问题的原因,并且道具已正确更新

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当react js中的任何状态发生变化时,如何停止重新渲染子组件?

来自分类Dev

当第一个组件的状态发生变化时,防止在第二个组件上呈现

来自分类Dev

即使该组件的道具或状态未发生变化,React shouldComponentUpdate()也会被调用

来自分类Dev

如何设置子组件的子组件的父组件状态

来自分类Dev

当上下文使用者中的任何状态发生变化时,React是否会重新渲染所有组件?

来自分类Dev

在子组件的状态之间共享父状态?

来自分类Dev

AngularJS 1.5当模板组件内部的内容发生变化时,如何获取事件

来自分类Dev

当Vue中的路由参数发生变化时访问`from`组件

来自分类Dev

如果状态发生变化,反应会销毁组件中所有旧的域吗?

来自分类Dev

父状态更新时更新子组件

来自分类Dev

处理子组件中的父状态

来自分类Dev

子组件更新时更改父状态

来自分类Dev

父状态更新时更新子组件

来自分类Dev

父状态不更新子组件

来自分类Dev

获取子组件的状态

来自分类Dev

如何将状态与父组件传递给子组件

来自分类Dev

如何将子组件的状态传递给父组件?

来自分类Dev

如何在父组件中使用子组件的状态?

来自分类Dev

父组件状态更新时,子组件的道具不更新

来自分类Dev

React:使用异步数据更新父组件的子组件状态

来自分类Dev

如何从功能组件的父级更改子状态组件

来自分类Dev

如何从ReactJs的子组件中跟踪父组件的状态?

来自分类Dev

正确使用组件和子组件访问父状态

来自分类Dev

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

来自分类Dev

如何正确设置子组件和父组件的状态?

来自分类Dev

状态正在更新,但组件没有将 props 中的更新状态发送到 Reactjs 中的子组件

来自分类Dev

如何在React中将数据从无状态子组件发送到无状态父组件?

来自分类Dev

子组件向父组件传输参数

来自分类Dev

在重新渲染父组件时,React如何重用子组件/保持子组件的状态?

Related 相关文章

  1. 1

    当react js中的任何状态发生变化时,如何停止重新渲染子组件?

  2. 2

    当第一个组件的状态发生变化时,防止在第二个组件上呈现

  3. 3

    即使该组件的道具或状态未发生变化,React shouldComponentUpdate()也会被调用

  4. 4

    如何设置子组件的子组件的父组件状态

  5. 5

    当上下文使用者中的任何状态发生变化时,React是否会重新渲染所有组件?

  6. 6

    在子组件的状态之间共享父状态?

  7. 7

    AngularJS 1.5当模板组件内部的内容发生变化时,如何获取事件

  8. 8

    当Vue中的路由参数发生变化时访问`from`组件

  9. 9

    如果状态发生变化,反应会销毁组件中所有旧的域吗?

  10. 10

    父状态更新时更新子组件

  11. 11

    处理子组件中的父状态

  12. 12

    子组件更新时更改父状态

  13. 13

    父状态更新时更新子组件

  14. 14

    父状态不更新子组件

  15. 15

    获取子组件的状态

  16. 16

    如何将状态与父组件传递给子组件

  17. 17

    如何将子组件的状态传递给父组件?

  18. 18

    如何在父组件中使用子组件的状态?

  19. 19

    父组件状态更新时,子组件的道具不更新

  20. 20

    React:使用异步数据更新父组件的子组件状态

  21. 21

    如何从功能组件的父级更改子状态组件

  22. 22

    如何从ReactJs的子组件中跟踪父组件的状态?

  23. 23

    正确使用组件和子组件访问父状态

  24. 24

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

  25. 25

    如何正确设置子组件和父组件的状态?

  26. 26

    状态正在更新,但组件没有将 props 中的更新状态发送到 Reactjs 中的子组件

  27. 27

    如何在React中将数据从无状态子组件发送到无状态父组件?

  28. 28

    子组件向父组件传输参数

  29. 29

    在重新渲染父组件时,React如何重用子组件/保持子组件的状态?

热门标签

归档