Reactjs 未定义变量时如何等待
我有两个“useEffect”,第一个只运行一次,第二个每次更新日期都运行。问题在于,第二个useEffect依赖于在第一个useEffect上设置的值。有没有简单的方法让第二个useffect等待变量被定义 这就是我所拥有的:Reactjs 未定义变量时如何等待,reactjs,Reactjs,我有两个“useEffect”,第一个只运行一次,第二个每次更新日期都运行。问题在于,第二个useEffect依赖于在第一个useEffect上设置的值。有没有简单的方法让第二个useffect等待变量被定义 这就是我所拥有的: useEffect(() => { database.collection('EmpleadosDev').get() .then(response => { const fetchedEmpleados =
useEffect(() => {
database.collection('EmpleadosDev').get()
.then(response => {
const fetchedEmpleados = [];
const emails = [];
response.forEach(document => {
const fetchedEmpleado = {
id: document.id,
...document.data()
};
fetchedEmpleados.push(fetchedEmpleado);
fetchedEmpleados.forEach(element => {
emails.push(element.Email)
});
if (!emails.includes(currentUser.email)) {
alert('Este usuario no tiene permisos de acceso. Serás redirigido al login');
firebase.auth().signOut();
throw BreakException;
} else {
setEmpleadoSeleccionado(fetchedEmpleados[emails.indexOf(currentUser.email)]) **//This is what I need on the second useEffect**
}
});
setEmpleados(fetchedEmpleados);
})
}, [])
这是第二个效果:
useEffect(() => {
if (empleadoSeleccionado !== undefined) //This works only when I update "startDate" {
database.collection('NegociosDev').doc(empleadoSeleccionado.RefNegocio.path.split('/')[1]).collection('Negocios').doc(empleadoSeleccionado.RefNegocio.path.split('/')[3]).collection('citas').get()
.then(response => {
const fetchedCitas = [];
const fetchedIDs = [];
response.forEach(document => {
const fetchedCita = {
id: document.id,
...document.data()
};
const fetchedID = document.id;
fetchedIDs.push(fetchedID);
if (fetchedCita.CheckIn.split(' ')[0] === startDate.toISOString().split('T')[0]) {
fetchedCitas.push(fetchedCita);
}
});
setCitas(fetchedCitas);
setIDs(fetchedIDs)
})
}
}, [startDate])
我发现可以在useEffect上使用第二个参数,如下所示:
useEffect(() => {
//code
}, [par1, par2])
每次任何一个改变都会触发