私はReact/react-reduxを使用して反応で不規則なスクロールを作成しようとしています。ここに私のコンテナコンポーネントは次のとおりです。Redux - 呼び出しアクションの際にprop - >ディスパッチをpropに設定しました
export function loadArticles(){
return {
type:"LOAD_ARTICLES"
};
}
QUESTION:どのように私はloadMoreArticles
handleScroll
内部関数を呼び出すん
import React from "react";
import {SingleArticleContainer} from "./singleArticleContainer";
import {connect} from "react-redux";
export class ArticleList extends React.Component{
componentDidMount(){
window.addEventListener('scroll', this.handleScroll);
}
componentWillUnmount() {
window.removeEventListener('scroll', this.handleScroll);
}
handleScroll(event){
let scrollTop = event.srcElement.body.scrollTop;
let viewHeight=window.innerHeight;
let elemtScrollHeight=event.srcElement.body.scrollHeight;
if((elemtScrollHeight-scrollTop-viewHeight)<=20){
//load more article from server.
this.props.loadMoreArticles(); <--- got error because this.props is undefined
//HOW CAN I MAKE CALL HERE?
}
}
render(){
return <div>
{this.props.articles.map(()=>
<SingleArticleContainer/>
)}
</div>
}
}
const mapStateToProps=(state)=>{
return {
articles:state.articles
};
}
const mapDisptachToProps=(dispatch)=>{
return {
loadMoreArticles:()=>{
dispatch(loadArticles());
}
}
}
私もアクションloadArticles
自分の行動のクリエイターのためのアクションの作成者が作成しますか?私はloadMoreArticles
がコンポーネントのプロパティになっていることを理解しています。
変更しかし:
の詳細については、Reduxのドキュメントを確認してください作業。コンポーネントの 'props'は' handleScroll'関数では未定義です。だから答えは無関係です。ありがとうございます –
'handle.log(this)'を 'handleScroll'関数に書くと' this'がウィンドウオブジェクトを参照していることがわかります。私は自分のコードでタイプミスをしましたが、nabnが私のためにそれを更新しました。 – RobertMulders
はい。あなたは窓の物体について正しいものでした。しかし、とにかく、私は 'loadMoreArticles'をhandleScroll関数の中で呼び出すことはできません。それは 'undefined 'を持っています。何か案が ? –