React-Redux / Redux:从外部功能更新存储

时间:2019-06-20 19:23:04

标签: javascript reactjs redux react-redux

因此,我试图从一个单独的JavaScript文件中更新商店和我的组件,但是我有点挣扎了。

我要调用的函数在组件中起作用,但在我想要的文件中不起作用。这很有道理,我想我已经接近了,我想获得一些帮助,让一切顺利完成!

代码如下:How can I combine my customize module with Omnet++INET's simple module

如果打开page.js,将看到Page组件,该组件具有两个具有onClick功能的按钮。单击后,h1的值将发生变化-这将按预期工作。

现在,如果您打开newfile.jsx(包含在index.js中),我将设置为2.5秒的超时,该超时将调用actions.js中的成功函数。该函数成功记录日志“ SUCCESS”。但是据我所知,商店不会更新,页面上的h1文本也不会更新。

就像我说的,我认为,至少我希望,我很亲近。但是我真的对我需要从这里去那里感到困惑。任何帮助将非常感激。谢谢!

代码: 以下是似乎无法正常工作的

import { successAction, errorAction } from "./actions";

setTimeout(function() {
  console.log("Timeout Complete");
  successAction();
}, 2500);

我的实际组件中确实包含以下内容,我认为这可能是我所缺少的。我只是不知道如何使用newfile.jsx中的格式来格式化它。据我所知,它是组件导出方式的内置工具。

const mapStateToProps = state => ({
  status: state.status
});

const mapDispatchToProps = dispatch => ({
  successAction: () => dispatch(successAction()),
  errorAction: () => dispatch(errorAction())
});

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

我尝试将以下内容添加到newfile.jsx中,但这似乎不起作用。

const mapStateToProps = state => ({
  status: state.status
});

const mapDispatchToProps = dispatch => ({
  successAction: () => dispatch(successAction()),
  errorAction: () => dispatch(errorAction())
});

connect(
  mapStateToProps,
  mapDispatchToProps
);

1 个答案:

答案 0 :(得分:1)

将商店导入您的newFile.jsx,然后从那里分发。

import { successAction, errorAction } from "./actions";
import store from "./store";

setTimeout(function() {
  console.log("Timeout Complete");
  store.dispatch( successAction() );
}, 2500);