2017-03-08 1 views
0

사용자 생성 그룹에 이동 장치 기능을 구현하고 싶습니다. 이 기능은 사용자가 기기를 선택하면 그룹 만들기 버튼이 나타납니다. 그룹 만들기 버튼을 클릭하면 사용자가 그룹 이름으로 양식을 채우고 때 그룹과 을 만들기 위해 사용자 양식을 열어, POST 기능이되는 실행 사가의이 createGroup는 그룹이redux saga의 다중 게시 기능

입니다 만들 및 URL을 구현

/i를 수행하고 있지만, 현재, 사용자가 기 선택된 장치가 생성 된 그룹으로 이동한다 생성되었음을 작동

을 device_groups. 어떻게해야합니까? 그 생성 된 그룹에 장치를 올리기위한 URL이

은/device_group /의 groupId/요컨대

를 추가하고, 사용자 디바이스 또는 디바이스 선택 버튼이 표시되는 그룹을 만들고, 사용자가 그룹을 생성하고 선택한 장치는 해당 그룹으로 이동해야합니다.

이며 선택한 장치 ID의 목록 만 허용합니다. 가능하면 내가 할 것

function* createGroup(action) { 
    console.log('action', action); 
    const group = action.group; 
    const deviceId = action.deviceId; 
    if (yield call(isGroupValid, fromJS(action.group))) { 
    yield fork(POST(`/device_groups`, createGroupSuccess, createGroupError, group)); 
    } 
} 

case CREATE_GROUP: 
    return state 
    .set('loading', true) 
    .set('error', null); 

case CREATE_GROUP_SUCCESS: 
    const deviceGroups = fromJS(action.group, idReviver); 
    return state.set('loading', false).set('error', null) 
    .setIn(['deviceGroups', deviceGroups.get('id')], deviceGroups); 

export function createGroup(group, deviceId) { 
    return { 
    type: CREATE_GROUP, 
    group, 
    deviceId 
    }; 
} 

export function createGroupSuccess(group) { 
    return { 
    type: CREATE_GROUP_SUCCESS, 
    group, 
    }; 
} 

답변

0

문제는 해당 그룹으로 이동 장치 ID 목록을 받아 그룹 생성 API 엔드 포인트를 변경하는 것입니다. 그렇게하면 단 한 번의 API 호출 만하면됩니다. 여기

function* createGroup(action) { 
    try { 
    const group = action.group; 
    const deviceIds = action.deviceIds; 
    if (yield call(isGroupValid, fromJS(action.group))) { 
     // Create group 
     const createdGroup = yield call(API.createGroup, group); 
     // Add devices to new group 
     yield deviceIds.map((deviceId) => call(API.addDeviceToGroup, createdGroup, deviceId)); 
     // Success action 
     yield put(createGroupSuccess(createdGroup)); 
    } 
    } catch (e) { 
    yield put(createGroupFailed(group)); 
    } 
} 

API는 약속을 반환하고 실제 나머지 통화를 할 기능이 포함되어 가능하지 않은 경우

는, 내가 좋아하는 뭔가를 할 수있는 무용담을 수정합니다.

관련 문제