如何调度动作以将数据保存在下一个js中的存储中

时间:2019-10-19 17:31:11

标签: javascript reactjs redux

我想做的是在我设置的间隔函数中调度一个动作,而不是在获取初始道具时派遣一个动作,并将我的数据保存在商店中,以及如何从react app中从商店中获取该数据,这很简单,只需从动作表单动作文件中导入并像这样this.props.actionName()进行调用,但是接下来我该如何做并如何从存储中获取数据,我们将状态映射到props下一步该如何完成呢?感谢我在这里要实现的功能

this.fetchCryptoData().then(data => {
       var Keys = Object.keys(data.DISPLAY);
        this.setState(
          {
            crypto_head_coins: Keys
          },
          () => {
            //   // this.props.update_array([]); // update_array() is my action i haven't imported it
            let rate_updated = [true, true, true, true]; // i want my store updated_array data here
            for (let i = 0; i < this.state.crypto_head_coins.length; i++) {
             //my code here
            // this.props.store.dispatch(update_rate_array(rate_updated)) //it says cant read property
           // of dispatch of undefined 
            // i want to dispatch my action here not in getinitialprops
                    this.setState({ rate_updated });
                  }
                );
              });

1 个答案:

答案 0 :(得分:1)

有时我使用NextJS,本质上与Create-React-App相同。

我刚刚注意到您的问题不包括'React-Redux',您需要安装/保存'React-Redux'和'Redux'才能使用连接/发送,等等。我有一个sample boilerplate on Github

用于将其转换为动作的另一个缺少的部分可能是redux-thunk,用于处理承诺。(请先尝试不使用它。)

有关redux-thunk的更多信息,请参见此处。 https://github.com/reduxjs/redux-thunk

您两次设置状态(一次在另一个回调中),这将导致多次重新渲染。 (除非实施了ShouldComponentUpdate)可能要重新考虑此设计。

将您的MapDispatch应用于道具

这样做之后,您可以简化调用它的行,就像下面使用destructing一样。

// this.props.store.dispatch(update_rate_array(rate_updated)) //it says cant read property

let update_rate_array = {this.props}

update_rate_array(rate_updated)

您应该实现MapDispatchToProps,以消除命名和调用过程中的某些复杂性。

我已经上传了some simple examples to Github,也有an identical related CodeSandbox

要从State接收更新的信息,请使用MapStateToProps。

Example here