저는 반응이 빨라서 처음 인 이래로 오늘의 과제에 대처하기가 어렵습니다. 설명하겠습니다. 아래의 스크린 샷과 같은 두 개의 드롭 다운 목록과 그리드가 있습니다. 필터링 중이고 이미 필터링 된 상태입니다.
드롭 다운의 목적은 더미 데이터를 첫 번째로, 두 번째를 상태별로 필터링하는 것입니다.
export function filterBySide(product_side) {
const filtered_data_by_side = data.filter(record =>
{
return record.side.match(product_side)
});
return {
type: FILTER_BY_SIDE,
payload: {
filtered_data_by_side
}
};
}
export function filterByStatus(product_status) {
const filtered_data_by_status = data.filter(record =>
{
return record.status.match(product_status)
});
return {
type: FILTER_BY_STATUS,
payload: {
filtered_data_by_status
}
};
}
첫 번째 것은 측면 필터링과 다른 하나는 상태 필터링에 대한 책임이 있습니다.
case FILTER_BY_SIDE:
return state.set('filtered_data_by_side', List(action.payload.filtered_data_by_side));
case FILTER_BY_STATUS:
return state.set('filtered_data_by_status', List(action.payload.filtered_data_by_status));
을하고 난 계정 목록에서이를 사용할 수 MapStateToProps를 사용 : 그럼 난 이렇게 내 감속기에 행동이 통과 나는 또한 목록 드롭 다운에 내 행동을 가져
function mapStateToProps(state) {
return {
filtered_data_by_side:state.customer.get('filtered_data_by_side'),
filtered_data_by_status:state.customer.get('filtered_data_by_status')
};
}
. 내 문제는 내가 그리드의 데이터로 filtered_data_by_side를 통과했을 때 첫 번째 작업 만 발생하고 filtered_data_by_status를 통과했을 때 물론 두 번째로 합리적입니다. 원하는 기능은 데이터를 필터링하기 위해 첫 번째 드롭 다운을 선택한 다음 두 번째 드롭 다운에서 두 번째 드롭 다운으로 필터링해야하는 데이터를 선택하는 것과 그 반대의 경우입니다. 내가 어떻게 할 수 있니?
원본 데이터도 전달해야합니다. 현재 데이터는 어떻게 전달되고 있습니까? 'data.filter'가 사용되고 있지만 데이터에 대한 정의가 없습니다. –
응답 해 주셔서 감사합니다. Max! 그러나 나의 새로운 감속기가 어떻게 구성 될 것인가? – user7334203
내 생각에 원본 데이터 somwhere (즉, 감속기)를 추적하여 필요할 때 필터 동작에 전달하는 것이 좋습니다. 감속기는 업데이트 할'filters' 객체 또는 배열을 가지며 감속기에 'filteredData' 속성을 설정하여 데이터가 필터링되었음을 나타냅니다. 렌더링 할 때 필터링 된 데이터가 있으면이를 사용합니다. 그렇지 않으면 원본 데이터 원본을 사용합니다. –