学向勤中得,萤窗万卷书。这篇文章主要讲述React-Redux的使用相关的知识,希望能为你提供帮助。
当前使用 Redux 存在的问题:
- 冗余代码太多, 每次使用都需要在构造函数中获取 Redux 存储的内容
- 每次使用都需要监听和取消监听
- 操作 store 的代码过于分散
- 使用 React-Redux
- React-Redux 是 Redux 官方的绑定库, 能够让我们在组件中更好的读取和操作 Redux 中保存的状态
使用 React-Redux
- 安装 React-Redux
npm install react-redux
根据官方文档介绍,我们需要利用一个 Provider 包裹我们的根组件也就是 App.js 只要利用 Provider 将祖先组件包裹起来, 并且通过 Provider 的 ?
?store?
?? 属性将 Redux 的 ??store?
?? 传递给 ??Provider?
?, 那么就可以在所有后代中直接使用 Redux 了。- 修改 App.js
import& nbsp; ReactDOM& nbsp; from& nbsp; & #39; react-dom& #39; ;
import& nbsp; React& nbsp; from& nbsp; & #39; react& #39; ;
import& nbsp; App& nbsp; from& nbsp; & #39; ./App& #39; ;
import& nbsp; BrowserRouter& nbsp; from& nbsp; & #39; react-router-dom& #39; ;
import& nbsp; Provider& nbsp; from& nbsp; & #39; react-redux& #39; ;
import& nbsp; store& nbsp; from& nbsp; & quot; ./store/store& quot; ;
ReactDOM.render(
& nbsp; & nbsp; & nbsp; & nbsp; & lt; Provider& nbsp; store=store& gt;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; BrowserRouter& gt;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; App/& gt;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; /BrowserRouter>
& nbsp; & nbsp; & nbsp; & nbsp; & lt; /Provider> ,
& nbsp; & nbsp; & nbsp; & nbsp; document.getElementById(& #39; root& #39; )
);
- 在?
?mapStateToProps?
?? 方法中告诉??React-Redux?
??, 需要将??store?
?? 中保存的哪些数据映射到当前组件的??props?
? 上
const& nbsp; mapStateToProps& nbsp; =& nbsp; (state)& nbsp; =& gt; & nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; return& nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; count:& nbsp; state.count
& nbsp; & nbsp; & nbsp; & nbsp;
;
- 在?
?mapDispatchToProps?
?? 方法中告诉??React-Redux?
??, 需要将哪些派发的任务映射到当前组件的??props?
? 上
const& nbsp; mapDispatchToProps& nbsp; =& nbsp; (dispatch)& nbsp; =& gt; & nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; return& nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; increment()& nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; dispatch(addAction(1));
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
& nbsp; & nbsp; & nbsp; & nbsp;
;
- 通过 props 来使用 redux 中保存的数据
class& nbsp; Home& nbsp; extends& nbsp; React.PureComponent& nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; render()& nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; return& nbsp; (
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; div& gt;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; p& gt; this.props.count& lt; /p>
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; button& nbsp; onClick=()& nbsp; =& gt; & nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; this.props.increment()
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & gt; 递增
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; /button>
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; /div>
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
& nbsp; & nbsp; & nbsp; & nbsp;
- 最后在导出组件的时候使用?
?connect?
? 进行关联起来
export& nbsp; default& nbsp; connect(mapStateToProps,& nbsp; mapDispatchToProps)(Home);
- 最终 Home.js 组件代码如下
import& nbsp; React& nbsp; from& nbsp; & #39; react& #39; ;
import& nbsp; connect& nbsp; from& nbsp; & #39; react-redux& #39;
import& nbsp; addAction& nbsp; from& nbsp; & #39; ../store/action& #39; ;
class& nbsp; Home& nbsp; extends& nbsp; React.PureComponent& nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; render()& nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; return& nbsp; (
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; div& gt;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; p& gt; this.props.count& lt; /p>
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; button& nbsp; onClick=()& nbsp; =& gt; & nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; this.props.increment()
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & gt; 递增Home
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; /button>
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; /div>
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
& nbsp; & nbsp; & nbsp; & nbsp;
const& nbsp; mapStateToProps& nbsp; =& nbsp; (state)& nbsp; =& gt; & nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; return& nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; count:& nbsp; state.count
& nbsp; & nbsp; & nbsp; & nbsp;
;
const& nbsp; mapDispatchToProps& nbsp; =& nbsp; (dispatch)& nbsp; =& gt; & nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; return& nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; increment()& nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; dispatch(addAction(1));
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
& nbsp; & nbsp; & nbsp; & nbsp;
;
export& nbsp; default& nbsp; connect(mapStateToProps,& nbsp; mapDispatchToProps)(Home);
推荐阅读
- React-Redux-处理网络数据
- 后台管理项目页面搭建模板
- 低代码机器人是如何实现监控库存,并实时通知指定人,仓库管理不再慌乱
- 低代码开发的前后端联调——APICloud Studio 3 API管理工具结合数据云3.0使用教程
- 路由器配置点到多点IPSec VPN故障排查
- 前端必学——函数式编程
- PHP手册Array数组大全(解析)
- Tomcat服务器
- ES-聚合操作