我尝试在render()
上设置一个新的值状态:
this.state.contributionsList.map(function(item, i) {
this.setState({
listUsers: item.login
})
});

也是这样:
let usersByRepo = this.state.contributionsList.map(function(item, i) {
this.setState({
listUsers: item.login
})
});

如果我跑console.log(item)
,我就拥有了所有需要的东西。但是,如果我将此信息添加到我的州,我会得到TypeError: Cannot read property 'setState' of undefined
的反馈。为什么呢?
我有意这样做,因为我会将此结果作为prop
发送到我的组件。但我仍然遇到这个问题。
答案 0 :(得分:2)
你应该从不在渲染函数中调用setState
,它会导致无限循环。重新思考你的逻辑并将代码放在其他地方,它会起作用。
答案 1 :(得分:0)
任何新的function()
redefines what this
is。如果您可以使用ES6胖箭头功能,请执行以下操作:
this.state.contributionsList.map((item, i) => {
this.setState({
listUsers: item.login
})
});
如果没有,请:
var that = this;
this.state.contributionsList.map((item, i) => {
that.setState({
listUsers: item.login
})
});
也就是说,在render()中设置状态绝对不是你想要做的事情。它将导致无限循环,因为setState()导致调用render()。我不确定你要做什么,但应该有不同的方法来做。