NextJS Redux,Thunk和getInitialProps-如何实现

时间:2018-07-25 07:12:49

标签: reactjs redux redux-thunk next.js ssr

我想在新项目中同时使用nextjsredux的{​​{1}}。我想知道如何正确实现所有软件包。

在我以前的项目页面中,有thunk个组件,例如:

HOC

获取在import {connect} from 'react-redux'; import Page from './about'; import {fetchUsers} from '../../actions/user'; const mapStateToProps = (state) => { const {users} = state; return users; }; const mapDispatchToProps = (dispatch) => { return { fetchUsers: () => dispatch(fetchUsers()) }; }; export default connect(mapStateToProps, mapDispatchToProps)(Page); 中实现的用户的方法

如何为componentDidMount实现相同的逻辑?

我该怎么办?

  1. 实现的商店(基于_app.js中的next-redux-wrapper)
  2. 使用nexjsHOC创建了mapStateToProps组件(如下所示) mapDispatchToProps

目前,我正在考虑在this.props.fetchUsers中以某种方式使用getInitialProps方法-文档说应该使用此方法在渲染站点之前获取数据。

请帮助我为redux正确实施nextjs

2 个答案:

答案 0 :(得分:2)

您可以遵循此example 正确的方法是将存储传递到getInitialProps上下文和App组件,以便可以将其传递到Provider

getInitialProps无法访问该组件的实例,这是不可访问的,因此您无法调用this.props.fetchUsers,但是,因为要将存储传递给它的上下文,所以可以store.dispatch(fetchUsers())并从mapDispatchToProps中删除调度。

通常,我在getInitialProps中调度动作,然后将状态映射到connect中的道具。

答案 1 :(得分:0)

@gg _

您的解决方案有效,但仅当我使用链接更改页面时,如果刷新/重新加载页面select *, cast(concat(cast(left(col, 6) as date), ' ',stuff(right(col, 4), 3, 0, ':') ) as datetime ) as newdatetime from table t; 不会触发。

这是怎么做的?