如何在函数中替换this.props.dispatch?

时间:2017-05-20 12:21:16

标签: javascript reactjs react-redux

我通过在另一个.js文件中编写一个函数来分离我的代码。

问题是我无法访问我的redux连接函数,因为我没有在新的.js文件中使用类。

要清理:

这是我班级里面的函数( barChange ),我想在另一个js文件中移动

@connect((store) => {
  return {
   bar_change:store.bar_change
  };
})
export default class Bardoctor extends React.Component {
  constructor(props) {
     super(props);

   }
  barChange(arg0){
   //function code...
    this.props.dispatch(user.changeBarNum(arg0,"bar_change_doctor"));
    this.props.dispatch(user.sendBarDataDoctor("doctor_bar_send",temp_arr, flag_it, arg0));
  }

为了使用我的用户。功能我必须拥有 this.props.dispatch 。 如果我将 barChange 函数打包到另一个.js文件中并导出函数并在我的类中调用它,我将如何使用this.props.dispatch?

例如:

import * as user from "../actions/asyncCAll.js"
export function barChange(arg0, prop_arr, prop_next, string_change, string_send){
  //function code...
    dispatch(user.changeBarNum(arg0,string_change));
    dispatch(user.sendBarDataPatient(string_send, temp_arr, flag_it, arg0));
}

1 个答案:

答案 0 :(得分:2)

您可以将store导入新的js文件并直接使用商店的dispatch method

import store from 'path/to/your/store/file'

function barChange(arg0) {
  //function code...
  store.dispatch(user.changeBarNum(arg0, "bar_change_doctor"));
  store.dispatch(
    user.sendBarDataDoctor("doctor_bar_send", temp_arr, flag_it, arg0)
  );
}

如果您未使用createStore方法在单独的文件中创建商店,我建议您按照以下方式执行此操作。

const store = createStore(reducers, //...);

export default store;

警告:如果将此方法用于服务器端呈现,则此方法可能会出现问题。