Skip to content

Instantly share code, notes, and snippets.

@srph
Last active February 19, 2018 03:42
Show Gist options
  • Select an option

  • Save srph/dae50b9ec25350465196a59fc591ebe1 to your computer and use it in GitHub Desktop.

Select an option

Save srph/dae50b9ec25350465196a59fc591ebe1 to your computer and use it in GitHub Desktop.
import React, {Component} from 'react'
import SortingLayer from './SortingLayer'
class Column extends Component {
state = {
list: [], // Let's pretend this is filled by some AJAX request
sorting: 0
}
render() {
return (
<SortingLayer list={this.state.list} sorting={this.state.sorting}>
{(list) => (
list.map((item, i) => (
<div key={i}>
{item.title}
</div>
)
)}
</SortingLayer>
)
}
handleFilter(sorting) {
this.setState({ sorting })
}
}
import React, {Component} from 'react'
class SortingLayer extends Component {
state = {
list: this.filter(this.props)
}
componentWillReceiveProps(nextProps) {
if (nextProps.list !== this.props.list) {
this.setState({ list: this.filter(nextProps) })
}
}
render() {
return this.props.children(this.state.list)
}
filter(props) {
switch(props.sorting) {
case 1:
//
case 2:
//
case 3:
//
default:
return props.list
}
}
}
export default SortingLayer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment