2017-03-08 11 views
0

ユーザー作成グループに移動デバイスの機能を実装したいと思います。機能は、ユーザーが デバイスを選択すると、グループの作成ボタンが表示されます。グループボタンを作成する上でクリックすると、ユーザはグループ名でフォームを埋めたときに、佐賀のにcreateGroupは、POST機能が を実施し、グループを作成するためのURLがredux sagaの複数の投稿機能

である必要がありますされ実行されるグループを作成するには、ユーザーのためのフォームを開き、 私が行っていると取り組んでいるが、今、ユーザーがグループを作成したことを、選択した デバイスは、その作成したグループに移動する必要があります

/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エンドポイントを変更することです。そうすれば、あなたはその1つの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は約束を返すと、実際の残りの呼び出しを行う関数が含まれています。それができない場合

は、私のような何かをするサガを変更します。