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

1

学习React,我正在构建一个简单的计算器。组件模型为:

- Calculator
  - Sliders (input[ref=cars])
  - Dashboard (p {this.state.cars})

Sliders是具有一组输入的组件,应Dashboard通过父级Calculator状态将其传输到

我的目标是使状态值DashboardSliders输入组件的变化而变化。

var Calculator = React.createClass({
  getInitialState: function() {
    return {
      cars: 0
    };
  },
  render: function () {
    return (
      <div className="calculator">
        <Sliders
          cars={this.state.cars}
        />
        <Dashboard
          cars={this.state.cars}
        />
      </div>
    )
  }
});

var Dashboard = React.createClass({
  getInitialState:function () {
    return {
      cars: this.props.cars
    }
  },
  render: function () {
    return (
      <div>
        <h1>Dashboard</h1>
        <p>Cars: {this.state.cars}</p>
      </div>
    )
  }
})

var Sliders = React.createClass({
  getInitialState: function() {
    return {
      cars: this.props.cars
    };
  },
  handleInput: function () {
    var state = {
      cars: this.refs.cars.value
    }
    this.setState(state);
  },
  render: function () {
    return (
      <div className="sliders">
        <input type="text" ref="cars" onChange={this.handleInput} value={this.state.cars}/>
      </div>
    )
  }
})

正如我所了解的那样,它handleInput()被触发了,所以状态为Sliders置位。但是,它不会Calculator作为“汽车” “转移”到父母的州。因此,Calculator状态未更新=>Dashboard状态也未更新

如何在滑块和仪表盘之间共享计算器的父状态?

我知道,SO上有很多类似的问题,但是很难找到具体的有用案例,尤其是当您在React中完成菜鸟的时候。因此,很抱歉重复。

费利克斯·克林

组件不共享状态。但是,一个组件的状态可以成为另一组件的道具。

在你的情况,cars应该是国家Calculator,SlideDashboard应只检索cars当道具。如果输入发生更改,Sliders则应通知Calculator更改,以便它可以更新其状态并重新呈现(这也会导致SlidersCalculator更新):

var Calculator = React.createClass({
  getInitialState: function() {
    return {
      cars: 0
    };
  },

  onUpdate: function (cars) {
    this.setState({cars});
  },

  render: function () {
    return (
      <div className="calculator">
        <Sliders
          cars={this.state.cars}
          onUpdate={this.onUpdate}
        />
        <Dashboard
          cars={this.state.cars}
        />
      </div>
    )
  }
});

var Dashboard = React.createClass({
  render: function () {
    return (
      <div>
        <h1>Dashboard</h1>
        <p>Cars: {this.props.cars}</p>
      </div>
    )
  }
})

var Sliders = React.createClass({
  handleInput: function (event) {
    this.props.onUpdate(event.target.value);
  },

  render: function () {
    return (
      <div className="sliders">
        <input type="text" ref="cars" onChange={this.handleInput} value={this.props.cars}/>
      </div>
    )
  }
})

尽可能少的组件应具有状态,并且状态在树中应尽可能高。另请参见getInitialState中的道具是反模式

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在StencilJS组件之间共享状态

来自分类Dev

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

来自分类Dev

父状态更新时更新子组件

来自分类Dev

处理子组件中的父状态

来自分类Dev

子组件更新时更改父状态

来自分类Dev

父状态更新时更新子组件

来自分类Dev

父状态不更新子组件

来自分类Dev

如何管理子组件之间的UI状态?

来自分类Dev

React Hooks-与多个动态组件共享父状态

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

在SwiftUI中的同级之间共享父级的状态

来自分类Dev

如何在我所有组件之间共享状态?

来自分类Dev

从子组件更改父组件中的状态,然后将该状态作为属性传递,并在子组件中更改状态

来自分类Dev

如何在父级的子级组件中设置状态?

来自分类Dev

ReactJS:子组件在设置父状态之前更新

来自分类Dev

如何从reactJS中的子组件更新父状态

来自分类Dev

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

来自分类Dev

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

来自分类Dev

从React中的子组件更改父状态(无Redux)

来自分类Dev

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

Related 相关文章

  1. 1

    如何在StencilJS组件之间共享状态

  2. 2

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

  3. 3

    父状态更新时更新子组件

  4. 4

    处理子组件中的父状态

  5. 5

    子组件更新时更改父状态

  6. 6

    父状态更新时更新子组件

  7. 7

    父状态不更新子组件

  8. 8

    如何管理子组件之间的UI状态?

  9. 9

    React Hooks-与多个动态组件共享父状态

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

    在SwiftUI中的同级之间共享父级的状态

  21. 21

    如何在我所有组件之间共享状态?

  22. 22

    从子组件更改父组件中的状态,然后将该状态作为属性传递,并在子组件中更改状态

  23. 23

    如何在父级的子级组件中设置状态?

  24. 24

    ReactJS:子组件在设置父状态之前更新

  25. 25

    如何从reactJS中的子组件更新父状态

  26. 26

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

  27. 27

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

  28. 28

    从React中的子组件更改父状态(无Redux)

  29. 29

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

热门标签

归档