#javascript #reactjs #typescript #optimization #methods
#javascript #reactjs #typescript #оптимизация #методы
Вопрос:
const getDate = (id) =>{
const userId = info.find(user => user.id === id)
return userId.date;
}
const getValueAtOne = (id) => {
const userId = info.find(user => user.id === id)
if(userId?.value[0]){
return userId?.value[0]
}
}
const getValueAtTwo = (id) => {
const userId = info.find(user => user.id === id)
if(userId?.value[1]){
return userId?.value[1]
}
}
const getAllValues = (id) => {
const userId = info.find(user => user.id === id)
if(userId?.value) {
const arrValue = userId?.roles.map((validData) => {
return { value: validData, label:validData };
});
return arrValue;
}
}
У меня есть эти 4 метода, которые я вызываю из разных мест в моем коде.Но я хочу оптимизировать свой код и хочу, чтобы все эти методы были объединены в один метод, но я не могу придумать наилучший способ сделать это. первый метод возвращает мне дату, второй возвращает значение массива в позиции 1, третий метод возвращает значение массива в позиции 2, а четвертый метод возвращает все значение и преобразует его в объект.
Ответ №1:
Вы можете вернуть один объект следующим образом:
const getAll = (id) => {
const userId = info.find((user) => user.id === id);
const [valueAtOne, valueAtTwo] = userId?.value ?? [];
const allValues =
userId?.value.roles.map((validData) => ({
value: validData,
label: validData,
})) ?? [];
return {
allValues,
valueAtOne,
valueAtTwo,
};
};
Комментарии:
1. это выдает следующую ошибку: объекты недопустимы как дочерние элементы React (найдено: объект с ключами {valueAtOne, valueAtTwo}). Если вы хотели отобразить коллекцию дочерних элементов, используйте вместо этого массив.
2. Могу ли я использовать switch case или что-то еще для извлечения значений на основе условий. Я не хочу, чтобы все значения возвращались одновременно.
3. Эта ошибка связана с тем, как вы отображаете значение, а не с ответом. Также, пожалуйста, просто задайте другой вопрос и сосредоточьтесь на том, что вы спросили.
4. но в вашем ответе я соберу все значения вместе, мне нужно по одному значению за раз, вот почему я создал разные методы и вызываю их из разных мест. и для того же самого я спросил, могу ли я добавить переключатель или может быть условие if else внутри того же метода, которое возвращает мне разное значение в разных экземплярах.
5. Вам не обязательно использовать все значения вместе …
getAll(id).valueAtOne
…