actions 的异步方法在 componentWillMount 或 componentDidMount调用不
lovedaan opened this issue · 2 comments
lovedaan commented
@Map({
state: ['todos'],
mutations: ['query'],
actions: ['asyncQueryTodo']
})
componentWillMount() {
console.log(this.props); // {}
//this.props.asyncQueryTodo();
}
componentDidMount() {
console.log(this.props) // {}
}
那怎么在组件初始化的时候调用actions的方法呢
yisar commented
这……componentDidMount 调用不到 actions,因为它是基于 context api 的,context 只能高阶组件的 render 的时候用
如果你想要用 actions 的方法,需要将整个 store 实例引入
比如
import {store} from '../store/index'
class App extends React.Component {
componentDidMount(){
this.store.dispatch(action)
}
}
这在 redux 里也是一样的:
https://stackoverflow.com/questions/44452873/how-init-change-redux-state-from-componentdidmount
不过你提出的也很有道理,确实有这个场景
我最近有点忙,等过几天我会研究研究
然后就是……
暂时的解决方案,可以是要么引入 store ,要么就在组件里写直接也异步逻辑吧,不要放到 actions 里了