如何干净地组合高阶组件?目前我有类似的东西,必须有一种更清洁的方式来组合和组合HOC&#39>
const appWithWidth = withWidth()(App);
const appWithReduxAndWidth = connect(mapStateToProps, mapDispatchToProps)(appWithWidth);
const appWithRouterAndCookiesAndReduxAndWidth = withRouter(withCookies(appWithReduxAndWidth));
export default appWithRouterAndCookiesAndReduxAndWidth;
答案 0 :(得分:3)
是的,recompose
是一个很棒的图书馆。
例如,使用compose:
export default compose(
withWidth(all_the_cookie_width),
withCookies,
withMilk,
withHoldTheSprinkles
)(App);
答案 1 :(得分:3)
您可以使用recompose中的compose
组合多个高阶组件。
import { compose } from 'recompose'
export default compose(
withWidth,
connect(mapStateToProps, mapDispatchToProps),
withCookies,
withRouter
)(App)
答案 2 :(得分:2)
您可以使用redux:
中包含的composeimport { compose } from 'redux';
export default compose(
withRouter,
withCookies
connect(mapStateToProps, mapDispatchToProps),
withWidth()
)(App);
答案 3 :(得分:0)
对我来说,这个作品有效,但顺序对我的测试很重要。当我使用带有来自material-ui的宽度的路径时,它显示了'无限循环中的setState'的错误。不确定原因,可能有些人可以解释。这是我的代码,将帮助某人。
import compose from 'recompose/compose';
....
...
....
export default compose(
connect(mapStateToProps, null),
withRouter,
withWidth()
)(AppNav);