反应,该函数不加载数据

时间:2018-08-08 07:52:36

标签: reactjs react-redux

如何重写该函数,以便每次更改页面时都可以更新和加载该函数。事实是,加载功能仅在一页上起作用,但不会传递给其他页面,如何更改呢?

function loadModel(model) {
  return function(dispatch) {
    dispatch(moveToPending(model))

    const resource = require(`../resources/${model}`)
    const resourceActions = bindActionCreators(resource.actions, dispatch)
    const toaster = new Toaster(dispatch)

    return new Promise((resolve, reject) => {
      resourceActions[getFunctionName(model)]()
        .then(res => {
          resolve(model)
          dispatch(resolveSubscriptions(model))
        })
        .catch(err => {
          if (debug) console.error(err)
          reject({ ...err, model })
          dispatch(resolveSubscriptions(model))
          toaster.error(`Could not load ${model}!`)
        })
      })
  }
}

更新。 这是componentWillMount(),我已经有了它,我需要添加什么?

  componentWillMount() {
    this.props.actions.subscribe(this.subscriptions)
      .then(() => {
        this.props.actions.fetchRegisters({year: this.state.currentYear, month: defaultMonths()})
          .then(() => {
            if (!this.props.registers.length) {
              this.toaster.warning('There is no data for charts')
            }
            this.createReportState()
          })
      })
  }

1 个答案:

答案 0 :(得分:0)

React有一些生命周期方法。为此,您可以使用componentWillMountcomponentDidMount。您可以将此功能作为道具传递给其他页面,并可以在componentWillMount中调用它,例如:

componentWillMount() {
  this.props.loadModel(//arg);
}

以供参考:Component life-cycle methods