React:使用子复选框更新父组件的状态

时间:2018-04-19 00:56:56

标签: reactjs

我有以下父组件:

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>
  )
}

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

这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

正如我在评论中所说,如果你将州迁入父母,这是最简单的。

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'));