修改父级中的状态/props

IT技术 reactjs
2021-05-23 03:28:45

我试图弄清楚如何通过子组件影响父组件。我知道 React 的设计目的并不是真正做到这一点,但是在下面的场景中你将如何实现它?

您有一个包含数据的页面,该数据被传递到要显示的组件中。然后,您就有了一个基于排序和过滤的组件。您需要能够使用对适用于页面组件的排序过滤器的更改,以便可以操作数据。

谢谢

例如

> Page Component (this is where i get my data)
    >> Filtering & Sort Component (this is where I want to change the data)
    >> Data Listing Component (data passed into this)
2个回答

传递回调,当用户与您的过滤和排序组件交互时将调用该回调

import React, { PropTypes } from 'react'

class Page extends React.Component {
  updateFiltering(params) {
    this.setState({data: /* */})
  }

  updateSort(params) {
    this.setState({ data: /*  */})
  }

  render () {
    return (
      <div>
        <Filtering 
         onFilter={this.updateFiltering}  onSort={this.updateSort}>
        </Filtering>
        <DataListing data={this.state.data}></DataListing>
      </div>);
  }
}

onFilteronSortprops将你的组件内,然后用于onChange输入元素的props。

class Filtering extends React.Component {

  onChange(event) {
    // do something with your filter or just give it directly to the callback
    this.props.onFilter(event.target.selected)
  }

  render () {
    return (
      <select onChange={this.onChange}></select>
    );
  }
}

您也可以将方法作为props传递。然后子 a 将更改传递给父,父更新子 b。