mirrorjs/mirror

effect调用action成功,但是没有触发render

dpshen opened this issue · 1 comments

代码

mirror.model({
  name: 'app',
  initialState: {},
  reducers: {
    setRecords(state, records){
      state.records = records
      return state
    }
  },
  effects: {
    getRecords(){
      return new Promise((reslove, reject) => {
        let xhr = new XMLHttpRequest();
        xhr.xhr.onload = (e) => {
          resolve(current.responseText)
        };
        xhr.onerror = (e) => {
          reject({msg: "error"})
        };
        xhr.send()
      }).then((res) => {
        actions.app.setRecords(res.records)
      }).catch((err) => {
        console.error(err)
      })
    }
  }
}
export default connect(state => {
  console.log(state.app)
  return {app: state.app}
})(App)

场景

在App组件componentWillMount中执行actions.app.getRecords(),setRecords方法被成功调用,render没有被调用。

建议你先去了解一下 Redux 中 reducer 的概念。

reducer 一定要是一个纯函数

reducers: {
    setRecords(state, records){
      state.records = records // **<- 这段代码有问题**
      return state            // **<- 应该返回一个新对象,而不是返回原先的 state 对象**
    }
  },