繁体   English   中英

Redux 和 React:我的减速器无法识别 setInterval 的动作

[英]Redux & React: My reducer don't recognize action with setInterval

我正在寻找一种使用 React 和 Redux 在我的项目中每秒创建一个动作的方法。 通过这种方式,我可以到达,直到我采取行动,但我的减速器无法识别它。

class liftComponent extends React.Component {

    constructor(props){
        super(props);
    }

    componentDidMount(){
        setInterval(function(){
            handlerPosition()
        }, 1000);
    }



    render() {}

} 

const mapStateToProps = state => ({
    currentLevel: state
})
const mapDispatchToProps = (dispatch) => ({
    handlerPosition: (currentLevel) => dispatch(handlerPosition),
})

export default connect(mapStateToProps,mapDispatchToProps)(liftComponent);

您已经完成了大部分工作,至少在 Github 上的代码中是这样。 mapDispatchToProps将创建的函数作为 props 注入,因此在类组件中像this.props.callUp(i)一样访问它们。

componentDidMount(){
    // Probably should do something better with intervalId.
    // setState()?
    this.intervalId = setInterval(
        () => {
            this.props.callUp({thisLevel: 10000000});
            // or this.props.handlerPosition() or whatever.
        },
        1000
    );
}

我在使用带有钩子的功能组件时遇到了同样的问题。 我认为问题出在 mapDispatchToProps 函数中。

你必须改变这个:
handlerPosition: (currentLevel) => dispatch(handlerPosition)
对此:
handlerPosition: () => dispatch(handlerPosition())

我希望我的解决方案适合您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM