我想在新项目中同时使用nextjs
和redux
的{{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
实现相同的逻辑?
我该怎么办?
nexjs
和HOC
创建了mapStateToProps
组件(如下所示)
mapDispatchToProps
目前,我正在考虑在this.props.fetchUsers
中以某种方式使用getInitialProps
方法-文档说应该使用此方法在渲染站点之前获取数据。
请帮助我为redux
正确实施nextjs
答案 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;
不会触发。
这是怎么做的?