【发布时间】:2018-01-18 18:16:35
【问题描述】:
我正在尝试通过流星调用获取特定的用户详细信息(出于安全原因,它们需要在服务器端获取)并将结果设置为状态。我现在正在尝试的是:
componentDidMount(){
Meteor.call('getCurrentCF', this.state.currentAccount, (err, res) => {
if (!err) {
var result = JSON.parse(res.content);
if (typeof result.cfu['destinations'] != 'undefined') {
if(result.cfu['destinations'][0].destination === "voicebox") {
this.setState({
cfActive: 'btn btn-block btn-maik',
vbActive: 'btn btn-block btn-maik-active',
});
} else {
this.setState({
cfActive: 'btn btn-block btn-maik-active',
vbActive: 'btn btn-block btn-maik',
currentCFDest: "(" + result.cfu['destinations'][0].simple_destination + ")",
});
}
} else {
this.setState({
cfActive: 'btn btn-block btn-maik',
vbActive: 'btn btn-block btn-maik',
});
}
} else {
console.log("Error: " + err);
}
});
Meteor.call('getCurrentVM', this.state.currentAccount, (err, res) => {
if(!err) {
var vms = JSON.parse(res.content);
this.setState({
vmCount: vms.total_count,
});
} else {
console.log(err)
}
});
this.setState({
isLoading: false,
});
}
但在尝试此操作时,我收到控制台错误消息:
警告:只能更新已安装或已安装的组件。这通常 表示您在一个 未安装的组件。这是无操作的。
一切正常,但它正在向浏览器控制台发送我不想要的错误消息。什么是让这项工作以正确方式工作的正确方法?
【问题讨论】:
-
如果这些数据是关于用户的,假设来自一个集合,那么有理由不对出版物这样做吗?
-
@user7386177 不,它不是来自集合。使用流星方法 (HTTP.call()) 从外部 API 获取数据。然后返回此数据并用于设置状态以供在应用程序中进一步使用。
-
我使用与您相同的方法来处理类似的事情,但使用条件渲染函数,因为子组件也依赖于该数据。你也在用这样的东西吗?
标签: javascript reactjs meteor setstate