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 ...
随机推荐
- [DevOps] 认识一下
大家都在说DevOps(Develop Operation),大概知道就是开发和运维沟通交流,一条线,然后使产品能够顺利的.短时间内上线.维稳什么的. 今天特意看了下 DockOne里面的一篇文章,再 ...
- Winio.dll的使用
Winio.dll的使用 WinIO程序库允许在32位的Windows应用程序中直接对I/O端口和物理内存进行存取操作.通过使用一种内核模式的设备驱动器和其它几种底层编程技巧,它绕过了Windows系 ...
- Uber中国在地方城市的人员架构是怎样的?
http://www.thepaper.cn/newsDetail_forward_1390516 澎湃新闻:Uber中国在地方城市的人员架构是怎样的? 柳甄:一般是3人组成的小团队作战.一名城市 ...
- kubeadm方式安装kubernetes
系统: Ubuntu 18.04.2 LTS 内存: 8G 机器: 属性 IP Hostname ssh Master 192.168.91.48 blackray-pc node1 1 ...
- rest字符串匹配模式-初次实现方案
一般的rest访问的路径如同这样的路径 http://localhost:8080/AppName/{class}/{method}/{param1}/{param2}... rest的方法分:POS ...
- iPhone获取手机里面所有的APP(私有库)+ 通过包名打开应用
1.获取到手机里面所有的APP包名 - (void)touss { Class lsawsc = objc_getClass("LSApplicationWorkspace"); ...
- Java设计模式学习之工厂模式
在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了.Java 设计模式之工厂模式 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低 ...
- Vmware ESXi 6.0 多Vlan部署,vSphere Client管理方法
背景: 公司IT部门新购了两台服务器与一台存储,打算做虚拟化,并将存储分成两个部分,分别配给那两台服务器.在宿主机上要安装的虚拟机属于不同的网段,这就涉及了多VLAN,当然这并不是多么高深的技术,属于 ...
- Mac & Xcode 技巧
1.Xcode 删除过期的Provisioning Profile文件 解决:Xcode 中所有的Provisioning Profile文件路径,都在 ~/Library/MobileDevice/ ...
- bzoj 1623: [Usaco2008 Open]Cow Cars 奶牛飞车
1623: [Usaco2008 Open]Cow Cars 奶牛飞车 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 325 Solved: 223[S ...