【问题标题】:React: Using Child checkbox to update Parent component's stateReact:使用子复选框更新父组件的状态
【发布时间】:2018-04-19 00:56:56
【问题描述】:

我有以下父组件:

export class Parent extends Component {
  constructor(props) {
    super(props)
    state = {
      value: 0
    }  
  }
}

render() {
  return (
    <Child />
  )
}

还有以下子组件:

export class Parent extends Component {
  constructor(props) {
    super(props)
    state = {
      num: 0
    }  
  }
}

toggleCheckboxChange = () => {
   this.setState({ num: 5})
}

render() {
  return (
    <div>
      <label>
      {this.state.num}
      <input type="checkbox" onChange={this.toggleCheckboxChange}
       />
      </label>
    </div>
  )
}

我想使用复选框将子状态 num 设置为 5,然后将其传递给父状态 value

最好的方法是什么?

【问题讨论】:

  • 通常最简单的方法是直接将 state 放在 parent 中,然后通过 props 向下传递事件处理程序。
  • 感谢您的回答。我似乎无法理解它是如何工作的,React 的新手。

标签: reactjs


【解决方案1】:

正如我在评论中所说,将状态移至父级是最简单的。

working example

import React, {Component} from 'react';
import {render} from 'react-dom';

class Parent extends Component {

    state = {
        value: 0
    }

    toggleCheckboxChange = ev => {
        this.setState({value: 5})
    }


    render() {
        return (
            <Child num={this.state.value} toggleCheckboxChange={this.toggleCheckboxChange}/>
        );
    }
}

function Child({num, toggleCheckboxChange}) {
    return (
        <div>
            <label>
                {num}
                <input type="checkbox" onChange={toggleCheckboxChange}
                />
            </label>
        </div>
    )
}

render(<Parent/>, document.getElementById('root'));

【讨论】:

  • 感谢您的回答!如果我想设置孩子的 ID 道具而不是 5 怎么办?这会是父组件中的 {value: this.props.id} 吗?
  • @Ruham 我不确定你在问什么。您可以将任何道具传递给孩子:&lt;Child id={anythingYouWant} /&gt;
猜你喜欢
  • 1970-01-01
  • 2018-10-09
  • 2020-09-22
  • 2023-03-26
  • 1970-01-01
  • 2018-02-20
  • 2021-01-12
  • 2016-09-11
  • 2019-02-14
相关资源
最近更新 更多