react-redux: modal
1.actionTpye
export const INCREMENT = 'INCREMENT';
export const DECREMENT = 'DECREMENT'; export const OPENMODAL = 'OPENMODAL';
export const CLOSEMODAL = 'CLOSEMODAL';
export const CONFIRM = 'CONFIRM';
2.create action:
import {createAction} from "redux-actions";
import {OPENMODAL, CLOSEMODAL, CONFIRM} from "constant/ActionType";
export const openModal = createAction(OPENMODAL);
export const closeModal = createAction(CLOSEMODAL);
export const handleConfirm = createAction(CONFIRM);
3.modal reducer:
import {OPENMODAL, CLOSEMODAL, CONFIRM} from "constant/ActionType";
const initialState = {
visible: false,
message: "Admin"
};
const MessageModalReducer = (state = initialState, action) => {
const visible = state.visible;
let message = state.message;
switch (action.type) {
case OPENMODAL:
case CLOSEMODAL:
return {
message,
visible: !visible
};
case CONFIRM:
message = "confirm message";
return {
message: message,
visible: !visible
};
default:
return state;
}
};
export default MessageModalReducer;
4.use
import React from "react";
import {connect} from "react-redux";
import {Row, Col, Button} from "antd"; import * as actions from "../../reduxModel/actions/CounterAction";
import {closeModal, openModal, handleConfirm} from "reduxModel/actions/ModalAction";
import MessageModal from "modals/message-modal/MessageModal";
import "./index.scss"; const mapStateToProps = state => {
return {
message: state.MessageModalReducer.message,
messageModalVisible: state.MessageModalReducer.visible
}
};
const mapDispatchToProps = {
openMessageModal: openModal,
closeMessageModal: closeModal,
handleConfirm: handleConfirm
}; class Home extends React.Component { constructor(props) {
super(props);
} render() {
const {message, openMessageModal, closeMessageModal, messageModalVisible, handleConfirm} = this.props;
return (
<div className="app-home">
<div className="app-layout-container">
<Row type="flex" justify="center" className="app-layout-body">
<Col span={24} className="page-panel">
welcome Home,{message}
<div>
<Button type="primary" htmlType="button"
onClick={openMessageModal}>plan</Button>
</div>
</Col>
</Row>
</div>
<MessageModal title="task detail info"
modalVisible={messageModalVisible}
handleOk={handleConfirm}
handleCancel={closeMessageModal}>
<DetailMapping type="plan"/>
</MessageModal>
</div>
)
}
} const HomeContainer = connect(
mapStateToProps,
mapDispatchToProps
)(Home); export default HomeContainer;
detailMapping:
import React from "react"; import PlanDetail from "page/demo/detail/PlanDetail";
import ManagerDetail from "page/demo/detail/ManagerDetail"; class DetailMapping extends React.Component{ render () {
const detailMapping = {
"plan": <PlanDetail />,
"manager": <ManagerDetail />
};
return (
<div>{detailMapping[this.props.type]}</div>
)
}
} export default DetailMapping;
6. modal:
import React from "react";
import {Modal} from "antd"; const MessageModal = props => { const {title, handleOk, handleCancel, modalVisible} = props; return (
<Modal title={title}
okText="confirm"
cancelText="cancel"
onOk={handleOk}
onCancel={handleCancel}
visible={modalVisible}>
{props.children}
</Modal>
)
}; export default MessageModal;
react-redux: modal的更多相关文章
- [React] react+redux+router+webpack+antd环境搭建一版
好久之前搭建的一个react执行环境,受历史影响是webpack3.10.0和webpack-dev-server2.7.1的环境,新项目准备用webpack4重新弄弄了,旧的记录就合并发布了(在没有 ...
- webpack+react+redux+es6开发模式
一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...
- react+redux教程(六)redux服务端渲染流程
今天,我们要讲解的是react+redux服务端渲染.个人认为,react击败angular的真正“杀手锏”就是服务端渲染.我们为什么要实现服务端渲染,主要是为了SEO. 例子 例子仍然是官方的计数器 ...
- react+redux教程(五)异步、单一state树结构、componentWillReceiveProps
今天,我们要讲解的是异步.单一state树结构.componentWillReceiveProps这三个知识点. 例子 这个例子是官方的例子,主要是从Reddit中请求新闻列表来显示,可以切换reac ...
- react+redux官方实例TODO从最简单的入门(6)-- 完结
通过实现了增-->删-->改-->查,对react结合redux的机制差不多已经了解,那么把剩下的功能一起完成吧 全选 1.声明状态,这个是全选状态 2.action约定 3.red ...
- react+redux官方实例TODO从最简单的入门(1)-- 前言
刚进公司的时候,一点react不会,有一个需求要改,重构页面!!!完全懵逼,一点不知道怎么办!然后就去官方文档,花了一周时间,就纯react实现了页面重构,总体来说,react还是比较简单的,由于当初 ...
- 重写官方TodoList,对于初学react+redux的人来说,很有好处
虽然官网的TodoList的例子写的很详细,但是都是一步到位,就是给你一个action,好家伙,全部都写好了,给你一个reducer,所有功能也是都写好了,但是我们这些小白怎么可能一下就消化那么多,那 ...
- react+redux教程(四)undo、devtools、router
上节课,我们介绍了一些es6的新语法:react+redux教程(三)reduce().filter().map().some().every()....展开属性 今天我们通过解读redux-undo ...
- react+redux教程(三)reduce()、filter()、map()、some()、every()、...展开属性
reduce().filter().map().some().every()....展开属性 这些概念属于es5.es6中的语法,跟react+redux并没有什么联系,我们直接在https:// ...
- react+redux教程(二)redux的单一状态树完全替代了react的状态机?
上篇react+redux教程,我们讲解了官方计数器的代码实现,react+redux教程(一).我们发现我们没有用到react组件本身的state,而是通过props来导入数据和操作的. 我们知道r ...
随机推荐
- eclipse导入项目,项目名出现红叉的情况(修改版)
转至:http://blog.csdn.net/niu_hao/article/details/17440247 今天用eclipse导入同事发给我的一个项目之后,项目名称上面出现红叉,但是其他地方都 ...
- VS2017 下使用 git. git服务器使用gitblit
注意事项: 创建的GIT不要包括有中文, 不然会不成功的..... gitblit安装及配置及客户端下载略过...... 可参考: https://www.cnblogs.com/jeremylee ...
- 一个linux命令(6/12):cat 命令
cat主要有三大功能:1.一次显示整个文件.$ cat filename2.从键盘创建一个文件.$ cat > filename 只能创建新文件,不能编辑已有文件.3.将几个文件合并为一 ...
- sql临时表的优点
1: 临时表来组织数据,更高效的查询速度. 2:临时表的操作不会写入日志文件:好处:提高了 临时表操作的速度:坏处: 数据一旦丢失,无法恢复. 3: 临时表只允许当前会话框进行访问,因此不会担心死锁 ...
- jQuery鼠标滑动切换焦点图
在线演示 本地下载
- Linux下使用USB模拟ACM串口设备【转】
本文转载自:https://www.cnblogs.com/pied/p/4549614.html 这个想法之前就在脑袋里有过,最近公司产品要用到,所以多做了些了解. 1. USB 简介 USB 是 ...
- Quartz(1)--框架简介
一.概述 Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间.主要用来执行定时任务,如:定时发送信息.定时生成报表等等. 二.为什么会选择Qu ...
- 通过HBase API进行开发
http://www.cnblogs.com/netbloomy/p/6683509.html 一.将HBase的jar包及hbase-site.xml添加到IDE 1.到安装HBase集群的任意一台 ...
- QT 进度条 QProgressDialog
//默认构造函数 参数依次为,对话框正文,取消按钮名称,进度条范围,及所属 QProgressDialog *progressDlg=new QProgressDialog( QStringLiter ...
- Pandas分组(GroupBy)
任何分组(groupby)操作都涉及原始对象的以下操作之一.它们是 - 分割对象 应用一个函数 结合的结果 在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数.在应用函数中,可以执行以下 ...