Почему мой установщик получает неверный идентификатор? [дубликат]Javascript

Форум по Javascript
Ответить
Anonymous
 Почему мой установщик получает неверный идентификатор? [дубликат]

Сообщение Anonymous »

Я использую Firebase для своей базы данных, а также HTML, CSS и jsx для внешнего интерфейса.
У меня есть следующее раскрывающееся меню:

Код: Выделить всё

            

Seleccione una empresa

{registeredCompanies.map((company, idx) => (

{company.nombre}

))}

Где handleCompanyChange выглядит следующим образом:

Код: Выделить всё

const RiskTable = () => {
const [registeredCompanies, setRegisteredCompanies] = useState([]);
const [selectedCompany, setSelectedCompany] = useState("");
const [selectedLogo, setSelectedLogo] = useState(null);

const loadCompanies = async () => {
const query = await getDocs(collection(db, "empresas"));
const fetched = query.docs.map((doc) => ({
id: doc.id,
nombre: doc.nombre,
...doc.data(),
}));
setRegisteredCompanies(fetched);
};

const handleCompanyChange = (e) => {
const compObj = registeredCompanies.find((a) => a.id === e.target.value);

setSelectedCompany(compObj.id);
setSelectedLogo(compObj ? compObj.logo : null);

if (selectedCompany !== "") {
loadAreas();
loadFolders();
}
};

const [selectedArea, setSelectedArea] = useState("");
const [registeredAreas, setRegisteredAreas] = useState([]);

const loadAreas = async () => {
const query = await getDocs(
collection(
db,
"Empresas_004_Herramientas_Manuales",
selectedCompany,
"areas"
)
);

console.log(selectedCompany);

const fetched = query.docs.map((doc) => ({
id: doc.id,
nombre: doc.nombre,
...doc.data(),
}));
setRegisteredAreas(fetched);
};

const handleAreaChange = (e) => {
const selectedName = e.target.value;
setSelectedArea(selectedName);
};

const [folders, setFolders] = useState([]);

const loadFolders = async () => {
const query = await getDocs(
collection(
db,
"Empresas_004_Herramientas_Manuales",
selectedCompany,
"carpetas"
)
);
const fetched = query.docs.map((doc) => ({
id: doc.id,
nombre: doc.nombre,
...doc.data(),
}));
setFolders(fetched);
};
};
Что он должен делать: использовать идентификатор из выбранного в данный момент параметра, чтобы найти объект JSON с тем же идентификатором, затем установить этот идентификатор в качестве выбранной компании и загрузить соответствующий логотип, области и папки.
Что он делает в настоящее время: использует идентификатор из выбранного в данный момент параметра, чтобы найти объект JSON с тем же идентификатором, затем установить идентификатор ранее выбранной компании и загрузить соответствующий логотип, области и папки.
Визуально, когда я изменяю свою функцию для отладки следующим образом:

Код: Выделить всё

  const handleCompanyChange = (e) => {
const compObj = registeredCompanies.find((a) =>  a.id === e.target.value);

setSelectedCompany(compObj.id);
setSelectedLogo(compObj ? compObj.logo : null);

console.log("selected company: ", selectedCompany);
console.log("selected object: ", compObj.id);
console.log("=======================================");

if (selectedCompany !== "") {
loadAreas();
loadFolders();
}
};
Я получаю такой результат:

выбранная компания: 0JQUHpMaIJ1yOYFR5wWh
выбранный объект: 1kOlRMmIICny12rmlbD5
==================================

В результате чего loadFolders и loadAreas загружают папки и области для другой компании.
Мне нужно сохранить идентификатор в selectedCompany, поскольку он реализован в остальной части приложения, которое кстати.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/798 ... e-wrong-id
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»