ice飞冰管理系统初体验,react-redux简单入门
ice-admin-template
react + react-router + redux + 封装函数;代码已经封装好了常用的方法和http接口,常量,接口返回码等等,项目可以直接入手,节约开发时间
项目地址:
ice-admin-template
ice框架ice
使用:
- 启动调试服务:
npm start
- 构建 dist:
npm run build
目录结构:
- react-router @4.x 默认采用 hashHistory 的单页应用
- 入口文件:
src/index.js
- 导航配置:
src/menuConfig.js
- 路由配置:
src/routerConfig.js
- 路由入口:
src/router.jsx
- 布局文件:
src/layouts
- 通用组件:
src/components
- 页面文件:
src/pages
效果图:
redux 与 react
redux 知识点网上很多,可自行百度,在这里实践一下
redux文件结构如下
1、引入注册
import { createStore } from 'redux'
import { Provider } from 'react-redux'import store from './store'export default <Provider store={store}><Router>{routeChildren}</Router>
</Provider>;
复制代码
当前代码中最主要的就是
import store from ./store
store.js代码如下
import {createStore, combineReducers, applyMiddleware} from 'redux';
import * as tags from './store/reducer';
import thunk from 'redux-thunk';let store = createStore(combineReducers({...tags}),applyMiddleware(thunk)
);export default store;
复制代码
redux-thunk解决异步的问题 放置这里的都是状态,也就是数据,这些数据有可能是接口数据,也有可能是Boolean的判断
action.js
action.js 与 reducer.js本身没有什么关系,到目前为止,没有把两种相关联起来, action只是纯函数而已
代码如下
import C from './../common/index';// 初始化获取标签,保存至redux
const action = {tagsListFunc() {return dispatch => {C.axios(C.api('tagList')).then(res=> {dispatch({type: 'tagsList',data: res.data || []})})}},showToastFunc() {return {type: 'showToast'}}
}
export default action;
复制代码
代码中用到dispatch函数,对应异步请求数据而不是纯return,则需要dispatch同步异步
reduce.js
./store/reduce.js
export const reducer = (state, action) => {if (!state) {return {tagsList: [],sortsList: [],loading: true}}switch (action.type) {case 'tagsList': state = Object.assign(state, {loading: false});return {...state,tagsList: action.data}break;case 'sortsList': state = Object.assign(state, {loading: false});return {...state,sortsList: action.data}break;case 'showToast':state = Object.assign(state, {loading: true});return {...state}}
}复制代码
根据action中的类型来判断return什么值到页面接受的值
调用页面
import action from './../../../../store/action'
import { connect } from 'react-redux';class TabTable extends Component {render() {return <div></div>}
}TabTable = connect(state=> {return {tagsList: state.reducer.tagsList,loading: state.reducer.loading} // reducer return回来的值
}, {tagsListFunc: action.tagsListFunc // action中的执行函数
})(TabTable)export default TabTable
复制代码
react-redcux 把react和redux链接起来了,connect也把reducer和action链接来了,使得action中retrun的值相对于赋值到reducer.js中去
在页面调用函数或调用state
this.props.tagsListFunc();
this.props.tagsList;
复制代码
ice飞冰管理系统初体验,react-redux简单入门相关推荐
- 我的Go+语言初体验——初学者的快速入门
"我的Go+语言初体验" | 征文活动进行中- 一.Go+ 是什么 听说Go+发布已经有几天了,之前有接触过Go.python.php.c等语言,所以看到Go+时感觉并不陌生. 那 ...
- Knative 初体验:CICD 极速入门
Knative 社区很早就在讨论用 Tekton 替换 Build 模块的相关事宜.Knative Build 官方已经正式说明不再建议使用 Knative Build 了. 如果你知道 Knativ ...
- Android进阶:十一、视频播放器初体验,android开发入门pdf
编译成功之后我们就可以在代码里面用它了,这个也很简单一般不会出什么问题.ijplayer里面提供了一个IMediaPlayer,我们初始化它即可: private void initMediaPlay ...
- SciTE文本编辑器初体验
SciTE文本编辑器初体验 1.简单设置SciTE文本编辑器 单击[Options]|[Open Global Options File] 打开SciTEGlobal.properties文件,做一些 ...
- Java开发 - 布隆过滤器初体验
目录 前言 布隆过滤器 什么是布隆过滤器 布隆过滤器的作用 布隆过滤器原理 怎么设计布隆过滤器 布隆过滤器使用案例 安装布隆过滤器 添加依赖 添加配置 添加工具类 添加测试代码 简单测试 特别提醒 ...
- Vue初体验(七)使用Vue实现一个简单的聊天框
1.实践是检验真理的唯一标准,现在我们做一个简易的聊天窗口,有一个input框,用于用户输入,一个按钮button,用于把用户的输入提交上去,然后又一个列表ul,用于展示我们每次提交的消息. 2.通过 ...
- Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验
Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...
- Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验
Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...
- python简单体育竞技模拟_python初体验 —— 模拟体育竞技
python初体验 -->>> 模拟体育竞技 一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ...
最新文章
- 4 款 MySQL 调优工具,公司大神都在用!
- [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十三:在DetailsView控件中使用TemplateField...
- UA MATH567 高维统计I 概率不等式9 亚高斯性的推广:Orlicz空间与Orlicz范数
- Jenkins+Gradle+Git+Pyger+二维码搭建Android自动打包平台
- 【Linux】一步一步学Linux——at命令(133)
- 分享Web应用运行的细节问题:预编译提高网站性能、跟踪用户习惯和解决线程同步...
- 在mysql表中如何变换列和行_在SQL中转换列和行的简单方法?
- H264基本概念之 宏块、片和片组
- win10兼容android下载安装,Win10手机运行安卓App兼容工具下载!
- SVN客户端安装以及操作流程
- Could not find a version that satisfies the requirement tensorflow
- tablepc是什么平板电脑_什么是TABLET PC,TABLET PC有什么功能呢?
- C语言中如何求三角形最大正弦值,余弦定理求三角形面积
- Vue项目url中的BASE_URL解析
- β-半乳糖苷酶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- vnc远程linux命令,用VNC实现远程桌面共享(支持Windows, Linux, …) | 易水博客
- 昵图网共享分下载代包下素材nipic呢图下载币图网设计素材下载
- Windows10精简优化无人值守安装
- 【3dsmax新手入门】-实体立方八面晶体绘制
- 蒙提霍尔问题(The Monty Hall Problem)解析(贝叶斯分析、Python仿真)