2016-07-12 1 views
0

체크 박스가있는 테이블이 있습니다. 사용자가 확인란을 선택하면 ID가 작업 작성자에게 전송됩니다.Redux/State에서 데이터를 추가/제거하기 Lodash를 사용하여

Component.js

handlePersonSelect({ id }, event) { 
    const { selectPerson, deselectPerson } = this.props; 
    event.target.checked ? selectPerson(id) : deselectPerson(id); 
} 

내가 잃었어요하는이 단계까지 모든 길을 갈 수 있어요

export function selectPerson(id) { 
    console.log("selected") 
    return { 
    type: SELECT_PERSON, 
    payload: id 
    }; 
} 

export function deselectPerson(id) { 
    return { 
    type: DESELECT_PERSON, 
    payload: id 
    }; 
} 

action.js : 이것은 잘못된 것입니다 코드 :

import { 
    SELECT_PERSON, 
    DESELECT_PERSON, 
    FETCH_PEOPLE 
} from '../actions/types'; 


const INITIAL_STATE = { people:[], selectedPeople:[]}; 

export default function(state = INITIAL_STATE, action) { 
    switch (action.type) { 
    case FETCH_PEOPLE: 
     return {...state, people: action.payload.data}; 
    case SELECT_PERSON: 
     return [action.payload, ...state ]; 
    case DESELECT_PERSON: 
     return _.without({state, selectedPeople:action.payload}); 
    } 
    return state; 
} 

selectedPeople 상태는 각 사례에 따라 ID를 더하거나 뺍니다. 현재 ID를 선택 취소 할 때마다 전체 "사람"테이블이 사라집니다.

export default function(state = INITIAL_STATE, action) { 
    switch (action.type) { 
    case FETCH_PEOPLE: 
     return {...state, people: action.payload.data}; 
    case SELECT_PERSON: 
     return {...state, selectedPeople: [ ...state.selectedPeople, action.payload]}; 
    case DESELECT_PERSON: 
     return {...state, selectedPeople: _.without(state.selectedPeople, action.payload)}; 
    default 
     return state; 
    } 
} 

은 또한 당신이 DESELECT_PERSON 조치를하지 않았다주의, 대신 2 SELECT_PERSON 행동 :

답변

1

당신은 그래서, 모든 경우에 감속기의 전체 상태를 반환해야합니다. 아마도 오타 일 겁니다.

+0

감사합니다. 그건 내가 시도해 오타되었습니다 – lost9123193

+0

_without 대신 _.outout 사용하고 그것을 작동했습니다, 감사합니다! – lost9123193

+0

죄송합니다. 오타되었습니다 ... – DDS