Я искал похожий вопрос, и ни один из найденных мною действительно не соответствовал моей проблеме ...
РЕДАКТИРОВАТЬ: вся идея в том, чтобы разработать повторно используемый выпадающий компонент, где я передаю элементы прямо через реквизит. Эти элементы должны быть объектами с ключом (для значения поля) и свойством отображения (для текста значения). Чтобы выполнить преобразование, я использую функцию itemify
. Весь этот код присутствует в компоненте формы, который будет включать раскрывающийся список.
Проблема выглядит следующим образом:
У меня есть массив объектов, которые я получаю с сервера. Цель состоит в том, чтобы сохранить этот массив объектов («старые объекты»), а также создать еще один («newObjects»). Этот новый массив должен содержать новые объекты, преобразованные из первого массива, но где:
newObject.key = oldObject.someProperty
newObject.display=oldObject.someOtherProperty
Чтобы сделать это преобразование, я создал функцию "itemify".
Теперь реальные результаты. Сначала я получаю данные с сервера. Затем я создаю другой массив, преобразовав тот, который получен API выборки.
getProfiles = async () => {
const result = await fetch(apiConfig.profilesAPI);
const body = await result.json();
if (body.data.length>0){
let temp = body.data;
console.log(temp);
let buffer = body.data.map(x=>itemify(x,"id","desc"));
this.setState((state,props)=>({
profiles: body.data,
profileItems: buffer
}));
}
}
РЕДАКТИРОВАТЬ: это моя полная функция itemify
function itemify(obj,id,display) {
let retVal = {
key: obj[id],
display: obj[display]
}
console.log("obj: "+obj);
console.log("retVal: "+retVal);
return retVal;
// return {key:obj[id],display:obj[display]} //prior version had only this line
}
Если я go извлекаю консоль, у меня это:
Первый журнал из первого фрагмента кода
console.log(temp);
Скажите, если вам нужно больше кода. Эта часть кода еще не на github.