如何重构这个Redux连接代码
How to refactor this Redux connect code?
我想在无状态组件(纯函数)中使用Redux connect和asyncConnect,所以我需要将这些类装饰器重构为常规的函数调用。
然而,我找不到一个asyncConnect的例子与连接任何地方。
@asyncConnect([{
deferred: true,
promise: ({ params, store: { dispatch, getState } }) => {
if (!isLoaded(getState())) {
return dispatch(loadUser(params.userID))
}
},
}])
@connect(
state => ({ // eslint-disable-line
user: state.publicData.user.data,
error: state.publicData.user.error,
loading: state.publicData.user.loading,
}),
{ initializeWithKey })
export default class UserProfile extends Component {
...stuff
}
这是我需要的:
asyncConnect(
someStuff,
connect(moreStuff)
)(props => <div />)
我只是不知道该怎么写
您可以使用Dan在redux中提供的compose
函数。
import { compose } from 'redux';
import { connect } from 'react-redux';
...
export default compose(
asyncConnect(...),
connect(...)
)(props => <div />);
compose
从右向左应用
compose
的官方文档。
作为一个有趣的问题,这本质上是使用与类一起使用的装饰器语法的另一种方法。您可以对类使用相同的方法。
还有一点建议/提示。
React严重依赖于功能概念。它让我自己适应了其中的一些,对我帮助很大。我强烈推荐以下免费在线书籍。你不需要一直深入Monads的世界,我想说至少前6章会对你的前进有很大的帮助。
https://github.com/MostlyAdequate/mostly-adequate-guide相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 如何使用密码检测网络中的状态连接
- React Redux错误页面管理
- 如何处理node.js节点mongodb中的连接和查询队列
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- 在Redux中,我应该在哪里编写复杂的异步流
- Twilio-显示所有连接参与者的远程参与者视频
- 操作放置在画布上的元素之间的连接
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- jQuery UI可排序-多连接列表拖动
- 如何使用offer/answer交换来自两个对等连接的流
- 在 react-redux 中连接时出错
- Redux Saga连接多个发电机进行存储
- React-Redux:当连接到处于状态的数组时无限循环
- 连接在 Redux-react 中无法使用 Stateless 组件
- 如何重构这个Redux连接代码
- 如何以可维护的方式使用React和Redux thunk处理服务器/连接异常
- React Redux-在没有连接的情况下调用调度(不是来自React组件)
- 如何在不必连接后端的情况下创建登录和注册页面(ReactJS+Redux)
- React-Router 组件在连接redux-store后不会应用activeStyle