Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React中将状态从子组件更新为父组件_Javascript_Reactjs_Function_Components - Fatal编程技术网

Javascript 在React中将状态从子组件更新为父组件

Javascript 在React中将状态从子组件更新为父组件,javascript,reactjs,function,components,Javascript,Reactjs,Function,Components,我的父组件中有这个构造函数 constructor (props) { super(props) this.state = { owner, name: '', projectToAdd: this.props.defaultProject, } } 属性projectToAdd设置为props传递的值,我需要使用位于我的子组件中的以下函数更改状态的此属性: handleProjectSelection = (projec

我的父组件中有这个构造函数

  constructor (props) {
    super(props)
    this.state = {
      owner,
      name: '',
      projectToAdd: this.props.defaultProject,
    }
  }
属性projectToAdd设置为props传递的值,我需要使用位于我的子组件中的以下函数更改状态的此属性:

  handleProjectSelection = (project) => () => {
    this.setState({
      projectToAdd: project.get('id')
    })
  }
  renderDropdown () {
    const { projects } = this.props
    const projectsList = projects.map((project) => (
      <li className='u-cursor--pointer u-padding-tiny u-font-size--12px'
        key={project.get('id')}
        onClick={this.handleProjectSelection(project)} >
        {project.get('name')}
      </li>
    ))
    return (
      <div>
        <ul className='c-folder-dropdown'
          name='projectList'
          form='start-retro-form'>
          {projectsList}
        </ul>
      </div>
    )
  }
单击子组件中标记的元素时调用此函数:

  handleProjectSelection = (project) => () => {
    this.setState({
      projectToAdd: project.get('id')
    })
  }
  renderDropdown () {
    const { projects } = this.props
    const projectsList = projects.map((project) => (
      <li className='u-cursor--pointer u-padding-tiny u-font-size--12px'
        key={project.get('id')}
        onClick={this.handleProjectSelection(project)} >
        {project.get('name')}
      </li>
    ))
    return (
      <div>
        <ul className='c-folder-dropdown'
          name='projectList'
          form='start-retro-form'>
          {projectsList}
        </ul>
      </div>
    )
  }

如何将状态从子组件更改为父组件?

将更改处理程序函数prop从父组件传递给子组件

class Parent{
   handleChange = () => {
      this.setState({
        foo: 'bar'
      })
    }

   render(){
      return <Child onChange={this.handleChange} {...this.state}/>
   }
}