使用 useTracker meteor subscribe 和 findOne 检查 !isLoading 和状态是否存在 mongo
Checking if !isLoading and state exists with useTracker meteor subscribe and findOne mongo
我通常可以在使用 isLoading 渲染反应组件时执行此操作,但是如果我尝试使用它来测试变量是否已准备就绪,它会抱怨地图未定义,即使在控制台中它肯定是一个数组我正在选择的值。 isLoading returns 有时未定义,我尝试检查 isLoading 是否为 !undefined ,所以我被卡住了。
const { leadsBuilder, isLoading } = useTracker(() => {
const noDataAvailable = { leadsBuilder: [] };
if (!Meteor.user()) {
return noDataAvailable;
}
const handler = Meteor.subscribe("leadsBuilder");
if (!handler.ready()) {
return { ...noDataAvailable, isLoading: true };
}
const leadsBuilder = LeadsBuilderCollection.findOne({ _id: params._id });
return { leadsBuilder };
});
if (!isLoading && leadsBuilder) {
let stateReplace = [];
leadsBuilder.inputs.map((leadInput, i) => {
stateReplace.push({ id: i, text: leadInput.name });
});
}
您正在测试 leadsBuilder
是否真实,但是您在 leadsBuilder
的 属性 上调用 .map
。
您应该将您的条件替换为:
if(!isLoading && leadsBuilder?.inputs?.length) {
//your code
}
?
测试是否定义了变量/属性,然后我们使用length
因为我们希望数组不为空
我通常可以在使用 isLoading 渲染反应组件时执行此操作,但是如果我尝试使用它来测试变量是否已准备就绪,它会抱怨地图未定义,即使在控制台中它肯定是一个数组我正在选择的值。 isLoading returns 有时未定义,我尝试检查 isLoading 是否为 !undefined ,所以我被卡住了。
const { leadsBuilder, isLoading } = useTracker(() => {
const noDataAvailable = { leadsBuilder: [] };
if (!Meteor.user()) {
return noDataAvailable;
}
const handler = Meteor.subscribe("leadsBuilder");
if (!handler.ready()) {
return { ...noDataAvailable, isLoading: true };
}
const leadsBuilder = LeadsBuilderCollection.findOne({ _id: params._id });
return { leadsBuilder };
});
if (!isLoading && leadsBuilder) {
let stateReplace = [];
leadsBuilder.inputs.map((leadInput, i) => {
stateReplace.push({ id: i, text: leadInput.name });
});
}
您正在测试 leadsBuilder
是否真实,但是您在 leadsBuilder
的 属性 上调用 .map
。
您应该将您的条件替换为:
if(!isLoading && leadsBuilder?.inputs?.length) {
//your code
}
?
测试是否定义了变量/属性,然后我们使用length
因为我们希望数组不为空