【问题标题】:How to dispatch actions via a timer using Redux [duplicate]如何使用 Redux 通过计时器调度动作 [重复]
【发布时间】:2018-10-02 21:45:42
【问题描述】:

我想每秒发送一个动作来更新无状态组件的显示。我最初的天真尝试涉及在渲染函数中调用window.setInterval,然后在每次组件渲染时调用它,每次都启动一个新的计时器。

我考虑过关闭一个指示计时器是否已经启动的变量,但这会违反无状态组件的概念。我想知道通过 React+Redux 完成此任务的适当方法是什么,理想情况下,同时继续使用无状态组件。

【问题讨论】:

  • 要正确回答您的问题,需要有关您的应用程序和“无状态”组件的更多信息。如果一个组件的表示依赖于某个经常更新的值,那么这就是状态的教科书定义。为什么你希望它是无状态的?

标签: reactjs redux react-redux-form react-component


【解决方案1】:

通常使用componentDidMountcomponentWillUnmount 生命周期挂钩进行此类操作。如果你想用 Redux 来做,你应该在容器中实现它,如果你需要的话,你应该把更新后的值传递给无状态组件。

例如:

class SomeContainer extends Component {

    _tick = () => {
        this.props.someAction()
    }

    render() {
        return <SomeComponent reduxValue={this.props.someValueFromRedux} />
    }

    componentDidMount() {
        this.timer = setInterval(this._tick, 1000)
    }

    componentWillUnmount() {
        clearInterval(this.timer)
    }
}

const mapStateToProps = ({ someReducer }) => {
    return {
        someValueFromRedux: someReducer.someValueFromRedux
    }
}

export default connect(mapStateToProps, { someAction })(SomeContainer)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2021-10-14
    • 2020-04-26
    相关资源
    最近更新 更多