попытка объединить два объекта и вернуть объединенный объект в react

#javascript #reactjs #ecmascript-6

#javascript #reactjs #ecmascript-6

Вопрос:

Я пытаюсь объединить объекты, как показано ниже

 export const extractSourceOfData = (library, isJsonData) => {
  const id = isJsonData ? library?.sourceOfData?.id : library?.sourceOfDataId;
  return { codesStandardsAndGuidelines: id ? [id] : null };
};

export const extractMaterialType = (library, isJsonData) => {
  const id = isJsonData ? library?.materialType.id : library?.materialTypeId;
  return { constructionMaterialTypes: id ? [id] : null };
}
 

и в другом компоненте я импортирую обе вышеуказанные функции и объединяю, как показано ниже

 import CODE_STANDARD_GUIDELINE, { extractSourceOfData } from '../codeStandardGuideline';
import CONSTRUCTION_MATERIAL_TYPE, { extractMaterialType } from './constructionMaterialType';

export const extractSecondaryIds = {   
  let secondaryIds = Object.assign{{}, ...extractSourceOfData, ...extractMaterialType };
  return secondaryIds
}
 

но при получении ошибки у оператора распространения, не мог бы кто-нибудь, пожалуйста, помочь мне в этом, заранее спасибо.

Комментарии:

1. вы не вызываете функции. extractSourceOfData это функция, а не объект

2. извините, мне нужно получить объект из обеих двух функций и создать объединенный объект из этих двух.

3. Либо сделайте { ...extractSourceOfData(), ...extractMaterialType() } , либо Object.assign{{}, extractSourceOfData(), extractMaterialType() };

4. тем не менее, он говорит ‘,’ ожидается export const extractSecondaryIds = { let secondaryIds = Object.assign({}, extractSourceOfData(), extractMaterialType()); return secondaryIds; }

5. Не делай Object.assign({}, ...extractSourceOfData(), ...extractMaterialType()); , делай Object.assign({}, extractSourceOfData(), extractMaterialType());

Ответ №1:

Попробуйте:

 const merged = {...extractSourceOfData(), ...extractMaterialType()};