class Log extends React.Component{
constructor(props){
super(props);
this.scrollLogs = this.scrollLogs.bind(this);
window.a = this;
}
componentDidUpdate(){
console.log("componentDidUpdate this.props.logList", this.props.logList, window.a == this);
}
scrollLogs(e){
console.log("this.props.logList", this.props.logList);
}
render(){
return (<div className="logs">
...
<div className="log-list" onScroll={this.scrollLogs}>
{this.props.logList.map((l, i) => {
return (
...
);
})}
</div>
</div>);
}
}
var mapStateToProps = (state, ownProps) => {
return {
logList: state.logs
};
}
var mapDispatchToProps = (dispatch, ownProps) => {
...
}
export var LogContainer = connect(mapStateToProps, mapDispatchToProps)(Log);
该组件具有一个道具logList
,它在页面加载时从服务器获取。它的初始值是[],几秒钟后就会有大约80个对象。它的值是使用redux设置的。当'道具'发生变化时'this'发生变化
在当支柱logList
改变componentDidUpdate
方法得到射击和this
的值更改上面的代码,因此,我无法访问this.props.logList
在scrollLogs
方法中,当滚动一个div其被烧制。
this.props.logList
在scrollLogs
里面总是空的数组。所有80个物体都可以正确打印componentDidUpdate
方法
正如您可能猜到的window.a == this
打印false
。
如何在scrollLogs
内访问this.props.logList
?
你可以显示如何调用scrollLogs吗? –
也可以从JSX模板发布组件的初始化代码。道具是如何通过的等等 – Denialos
我已更新我的问题并提供更多信息 –