我在控制台中收到此错误/警告:
setState(...):只能更新已安装或安装的组件。
我在这里安装组件:
componentDidMount()
{
if (this.isVisible()) {
this.setState({visible: true});
}
this.bindEventListeners();
}
这是引起问题的代码:
bindEventListeners()
{
let visibilityEvent = function (event) {
event.currentTarget.removeEventListener(event.type, visibilityEvent);
// protect the component against unloading
if (this.isVisible()) {
this.setState({visible: true});
}
// no need to call the timeout when its already visible
if (!this.state.visible) {
let scrollEvnt = setTimeout(function () {
EventContainer.readWindowEvent('scroll', visibilityEvent);
}, 100);
this.setState({scrollEv: scrollEvnt});
}
}.bind(this);
EventContainer.readWindowEvent('scroll', visibilityEvent);
}
这条线更精确:
this.setState({scrollEv:scrollEvnt});
如果我理解正确,则意味着我需要一种方法来卸载滚动事件。但我不确定这是否可行。我很确定你无法在(香草)javascript / React中取消绑定滚动事件。
isVisible()
{
let isVisible = true;
try {
let heightElement = ReactDOM.findDOMNode(this).getBoundingClientRect().top;
isVisible = heightElement - window.innerHeight < 0;
} catch (error) {
console.warn('Falling back');
}
return isVisible;
}
我可能错了,但我不确定如何解决此警告/错误。也许有人可以帮助我?任何帮助表示赞赏:)
非常感谢提前!
答案 0 :(得分:0)
我认为我们可能需要看到更多的代码来解决这个问题。
几个问题:
答案 1 :(得分:0)
您需要删除{ a: ['foo', 'bar', 'root', 'data'], b: ['foo', 'bar', 'root', 'data'] }
以下内容应该有效:
componentWillUnmount