【发布时间】:2021-10-19 15:50:22
【问题描述】:
我有一个功能性反应组件 Tasks_1,最初,我想从成功运行的 redux 存储中检索 userId。
在此之后,我想使用我从 redux 存储中检索到的 useEffect 中的 userId 从后端获取数据。
当 useEffect 运行时,它表示从状态 ID 中检索到一个空字符串。在从 useState 设置状态“id”后如何让 useEffect 运行?
function Tasks_1 () {
const [id, setId] = useState('');
const userId = useSelector((state) => state.id);
const [tasks, setTasks] = useState([]);
useEffect(() => {
setId(userId);
if (id !== '') {
db.collection('users').doc(id).collection('tasks').onSnapshot((snapshot)=>{
const tempTasks = [];
snapshot.forEach(
doc => {
tempTasks.push(doc.data());
}
)
setTasks(tempTasks);
});
}
}),[id];
return (
...
)
}
【问题讨论】:
-
不太了解这个问题 - 是什么让您目前的方法不够用?我的意思是你有一个 if 语句
if (id !== '')确保在没有设置 id 的情况下不调用数据库。 -
您忘记将
userId添加到useEffect依赖项。它会在检索到值时更新。 -
是的,由于某种原因,从后端拍摄快照时,我会收到无限循环错误或“路径为空”错误。我现在还看到,我没有在依赖项中使用 userId,这是一个我直到现在都不熟悉的概念。
标签: javascript reactjs react-native react-redux