【发布时间】:2019-06-21 15:50:08
【问题描述】:
我有一个简单的 nextjs 布局:
export default class AppLayout extends React.Component {
render() {
return (
<>
<Header />
{this.props.children}
<Footer />
</>
)
}
}
我一直在尝试用 redux 商店包装它:
import React from 'react'
import Header from './header'
import Footer from './footer'
import Page from './page';
import { connect } from 'react-redux';
class AppLayout extends React.Component {
render() {
return (
<>
<Header />
{this.props.children}
<Footer />
</>
)
}
}
const page = (props) => {
return <AppLayout {...props} />
}
export default Page(connect(state => state)(page));
这不起作用,因为我正在使用布局丢失每个页面的正文 我做错了什么?
store.js 很简单:
import { createStore } from 'redux';
import reducer from './reducers';
export default createStore(reducer);
页面是:
import React from 'react';
import { Provider } from 'react-redux';
import store from './store/store';
const page = (Page) => {
return (
class PageWrapper extends React.Component {
render() {
return (
<Provider store={store}>
<Page />
</Provider>
)
}
}
)
}
export default page;
看起来商店将自己注入为道具,替换了之前每个页面都有子节点的道具……这不是很好,因为还需要之前的道具……
欢迎提出任何意见
【问题讨论】:
-
Page是什么?否则,只需connect(state => state)(AppLayout)就足够了。 -
页面 - 将代码添加到问题中。这是加载商店的地方。我需要导出布局 - 您如何建议这样做?
-
您可以删除像
const page ...包装器这样的不必要的代码,这个组件没有做任何事情。和connect(state => state)一样。更清晰易懂只需export default Page(connect()(AppLayout)) -
谢谢,但仍然是同样的问题 - 如果添加商店,页面的正文会丢失,只有页脚和页眉......如果我只做
export default AppLayout,正文很好,如果我连接商店,身体就会消失......这是因为商店搞砸了 {this.props.children} 这是身体被传递到的地方...... -
啊,当然,我可以看到这个问题。基本上,当您使用
Provider定义const page =包装器时,您正在调用没有children道具的组件。尝试在没有包装器的情况下初始化 Provider,直接在 AppLayout 组件上进行
标签: javascript reactjs react-redux next.js