我是下一个新手,几天以来一直在尝试为基于下一个类的组件设置样板代码并反应 redux。
到目前为止我尝试了什么
_app.js
import "../assets/css/generic.css";
import Nav from "../Components/Nav/Nav";
import { Provider } from "react-redux";
import thunk from "redux-thunk";
import { reduxSoldierMiddleware } from "redux-soldier";
import { createStore, applyMiddleware, compose } from "redux";
import { clientMiddleware } from "../redux/stores/middleware";
import reducers from "../redux/stores/index";
import withRedux from "next-redux-wrapper";
import "bootstrap/dist/css/bootstrap.min.css";
const logger = store => {
return next => {
return action => {
const result = next(action);
return result;
};
};
};
const composeEnhancers = compose;
const store = createStore(
reducers,
// window.REDUX_DATA,
composeEnhancers(
applyMiddleware(
clientMiddleware(),
thunk,
reduxSoldierMiddleware,
logger
)
)
);
function Layouts({ Component, pageProps }) {
return (
<Provider store={store}>
<Nav />
<Component {...pageProps} />
</Provider>
);
}
Layouts.getInitialProps = async ({ Component, ctx }) => {
const pageProps = Component.getInitialProps
? await Component.getInitialProps(ctx)
: {};
//Anything returned here can be accessed by the client
return { pageProps: pageProps };
};
const makeStore = () => store;
export default withRedux(makeStore)(Layouts);
index.js
import React, { Component, Fragment } from "react";
import { Container } from "react-bootstrap";
import { connect } from "react-redux";
import * as UniversitiesActions from "../redux/actions/UniversitiesActions";
import * as StatesListActions from "../redux/actions/StatesListActions";
import _ from "lodash";
class Home extends Component {
async componentDidMount() {
await this.props.loadUniversities();
await this.props.loadStatesList();
}
render() {
return (
<Fragment>
<div className="header_bg header_generic_bg">
<Container>
<h1>Find Universities and Courses in Australia</h1>
<p>
There are {this.props.universities.length}{" "}
universities in Australia
</p>
<div className="searchcourse"></div>
</Container>
</div>
</Fragment>
);
}
}
const mapStateToProps = state => {
return {
stateslist: state.statesliststore.stateslist,
universities: state.universitiesstore.universities,
isLoading: state.universitiesstore.isLoading
};
};
const mapDispatchToProps = dispatch => {
return {
loadUniversities: () =>
dispatch(UniversitiesActions.loadUniversities()),
loadStatesList: () => dispatch(StatesListActions.loadStatesList())
};
};
export const loadData = async (store, match) => {
await store.dispatch(
UniversitiesActions.loadUniversities(),
StatesListActions.loadStatesList()
);
};
export default connect(mapStateToProps, mapDispatchToProps)(Home);
与上面的代码一样,我在安装组件时加载大学和州数据。在查看页面源代码时,我没有看到服务器呈现的 html。