Ich mag bewegen Gerät erstellt (Gruppe Gerät wird nur angezeigt, wenn eine Einrichtung ausgewählt wird) gelesen aber ich bin einen Fehler vonTypeerror: kann Eigenschaft ‚Status‘ undefinierten
TypeError: Cannot read property 'status' of undefined
auch immer in createGroupSuccess, updatedDevice-Objekt sollte übergeben werden, aber wenn ich in createGroupSuccess-Aktion trete, bekomme ich das ganze Geräteobjekt. Aus diesem Grund konnte ich die Gruppe im Geräteobjekt nicht hinzufügen, wenn ich versuche, mich zu bewegen.
function* createGroup(action) {
const device = yield select(selectDevice(), action);
const updatedDevice = { id: device.get('id') };
// const group = fromJS(action.group);
// if (action.deviceId) {
// group = device.getIn(['device_group', action.deviceId]);
// group = group.mergeDeep(action.group);
// console.log('group inside if block', group);
// }
updatedDevice.device_group = action.group;
if (action.group) {
yield call(POST(`/device/${updatedDevice.id}`, createGroupSuccess, createGroupError, updatedDevice));
}
}
function* rootSaga() {
yield takeEvery(CREATE_GROUP, createGroup);
}
export function createGroup(group, deviceId) {
return {
type: CREATE_GROUP,
group,
deviceId,
};
}
export function createGroupSuccess(device) {
console.log('group in success', device);
return {
type: CREATE_GROUP_SUCCESS,
device,
};
}
export function createGroupError(error) {
return {
type: CREATE_GROUP_ERROR,
error,
};
}
case CREATE_GROUP:
return state
.set('loading', true)
.set('error', null);
case CREATE_GROUP_SUCCESS:
console.log('success', action);
return state.set('loading', false).set('error', null)
.setIn(['devices', action.device.data.id, 'device_group', action.device.data]);
mein Gerät Objekt ist
device:Object
data:Object
description: null,
device_group: null,
id: "7eb006d6db50479aa47f887da0d4f10e",
name: "Fan Speed"
wo ich den Fehler gemacht habe in die Gruppe in dem Geräteobjekt zu schaffen, die ausgewählt wird, während die Gruppe zu schaffen?
UPDATE
export function POST(apiUri, onSuccess, onError, data) {
return dataLoader(apiUri, onSuccess, onError, data);
}
export function dataLoader(apiUri, onSuccess, onError, data) {
return function*() { // eslint-disable-line func-names
const requestURL = `${API_BASE}${apiUri}`;
try {
let options;
if (data !== undefined) {
options = {
method: 'POST',
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': Cookies.get('csrftoken'),
'X-Requested-With': 'XMLHttpRequest',
},
};
}
const response = yield call(requestJSON, requestURL, options);
yield put(onSuccess(response));
} catch (e) {
let error = null;
try {
error = yield call(() => e.response.json());
} catch (_) {
error = {
errors: [{
'code': e.response.status,
'msg': e.response.statusText,
}],
};
}
yield put(onError(error));
}
};
}
wo ist Ihre POST-Funktion? Ich nehme an, dass Sie den Antwortstatus darauf überprüfen. –
@FazalRasel Ich habe meine Frage aktualisiert. createGroupSuccess-Aktion erhält auch nicht das richtige Argument. Mit Recht Argument, ich meine updatedDeviec Objekt sollte mit ID und device_group übergeben werden, ich glaube, aber das gesamte Gerät Objekt mit device_group Null wird – milan