나는 sortable 테이블의 역할을하는 React 컴포넌트를 가지고있다. 테이블 헤더와 테이블 행은 컨테이너의 하위이며 컨테이너는 테이블의 상태를 처리합니다. 헤더를 클릭하면 데이터는 this semantic-ui-react example처럼 다시 정렬됩니다.React 하위 구성 요소가 새 소품을받지 않는 이유는 무엇입니까?
handleSort = (clickedColumn) => {
const { column, orders, direction } = this.state
if (column !== clickedColumn) {
this.setState({
column: clickedColumn,
orders: customSort(orders, clickedColumn),
direction: 'ascending',
})
} else {
this.setState({
orders: orders.reverse(),
direction: direction === 'ascending' ? 'descending' : 'ascending',
})}
내가 열 머리글을 클릭 처음으로, 최초의 폐쇄 실행하고 this.setState
컨테이너의 상태를 변경하고 새로운 소품을 받고 그에 따라 업데이트 할 아이들을 트리거합니다. 열 머리글을 다시 클릭하여 데이터 순서를 바꾸면 두 번째 클로저가 실행되고 this.setState
은 컨테이너의 상태를 업데이트합니다. 따라서 하위 구성 요소 OverviewTableHeader
은 업데이트되지만 OverviewTableRows
은 업데이트되지 않습니다.
render() {
const { designers, orders, column, direction } = this.state
if (orders === "loading"){
return <Loading />
}
const tableRows = <OverviewTableRows
designers={designers}
orders={this.state.orders}
/>
debugger
return (
<div className="overview">
<Table selectable fixed sortable>
<OverviewTableHeader sort={this.handleSort} column={column} direction={direction}/>
{tableRows}
</Table>
</div>
)
}
비디오에서
Here's a video of this in action.
, 당신은OverviewTableRows
트리거
componentWillReceiveProps
및
shouldComponentUpdate
setState
부모에 트리거 처음,하지만 두 번째를 볼 수 있습니다.
필요한 경우 모든 코드를 추가 할 수 있습니다. 이거 버그 야? 어떤 도움이라도 대단히 감사합니다!