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的更多相关文章

  1. [React] react+redux+router+webpack+antd环境搭建一版

    好久之前搭建的一个react执行环境,受历史影响是webpack3.10.0和webpack-dev-server2.7.1的环境,新项目准备用webpack4重新弄弄了,旧的记录就合并发布了(在没有 ...

  2. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

  3. react+redux教程(六)redux服务端渲染流程

    今天,我们要讲解的是react+redux服务端渲染.个人认为,react击败angular的真正“杀手锏”就是服务端渲染.我们为什么要实现服务端渲染,主要是为了SEO. 例子 例子仍然是官方的计数器 ...

  4. react+redux教程(五)异步、单一state树结构、componentWillReceiveProps

    今天,我们要讲解的是异步.单一state树结构.componentWillReceiveProps这三个知识点. 例子 这个例子是官方的例子,主要是从Reddit中请求新闻列表来显示,可以切换reac ...

  5. react+redux官方实例TODO从最简单的入门(6)-- 完结

    通过实现了增-->删-->改-->查,对react结合redux的机制差不多已经了解,那么把剩下的功能一起完成吧 全选 1.声明状态,这个是全选状态 2.action约定 3.red ...

  6. react+redux官方实例TODO从最简单的入门(1)-- 前言

    刚进公司的时候,一点react不会,有一个需求要改,重构页面!!!完全懵逼,一点不知道怎么办!然后就去官方文档,花了一周时间,就纯react实现了页面重构,总体来说,react还是比较简单的,由于当初 ...

  7. 重写官方TodoList,对于初学react+redux的人来说,很有好处

    虽然官网的TodoList的例子写的很详细,但是都是一步到位,就是给你一个action,好家伙,全部都写好了,给你一个reducer,所有功能也是都写好了,但是我们这些小白怎么可能一下就消化那么多,那 ...

  8. react+redux教程(四)undo、devtools、router

    上节课,我们介绍了一些es6的新语法:react+redux教程(三)reduce().filter().map().some().every()....展开属性 今天我们通过解读redux-undo ...

  9. react+redux教程(三)reduce()、filter()、map()、some()、every()、...展开属性

    reduce().filter().map().some().every()....展开属性   这些概念属于es5.es6中的语法,跟react+redux并没有什么联系,我们直接在https:// ...

  10. react+redux教程(二)redux的单一状态树完全替代了react的状态机?

    上篇react+redux教程,我们讲解了官方计数器的代码实现,react+redux教程(一).我们发现我们没有用到react组件本身的state,而是通过props来导入数据和操作的. 我们知道r ...

随机推荐

  1. git常用命令总结(转载)

    Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一.新建代码库 # 在当前目录新建一个Git代码库 $ git in ...

  2. n个数里选出m个不重复的数

    void change(int *p,int a,int b) { int tmp = *(p + a); *(p + a) = *(p + b); *(p + b) = tmp; } int mai ...

  3. php RFC兼容的电子邮件地址验证

    php中,进行RFC兼容的电子邮件地址验证的方法,有需要的朋友参考下吧. 分享一个可以验证RFC兼容的电子邮件地址的代码,支持RFC1123,2396,3696,4291,4343,5321等的验证. ...

  4. delphi编程创建桌面快捷方式

    delphi编程创建桌面快捷方式   uses ActiveX,ComObj,StdCtrls,ShlObj,FileCtrl; procedure TForm1.N2Click(Sender: TO ...

  5. Web层辅助工具类

    Java web开发中经常用到的一些方法: import java.io.BufferedReader; import java.net.InetAddress; import java.net.Un ...

  6. react下将输入的汉字转化为拼音

    1.首先需要一个简单的拼音和汉字对应的字典文件: /** * 收录常用汉字6763个,不支持声调,支持多音字,并按照汉字使用频率由低到高排序 */ var pinyin_dict_notone = { ...

  7. MySQL-5.7 存储过程及函数

    1.语法 CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) [characte ...

  8. undefined symbol: PyUnicodeUCS4_AsUTF8String

    python 默认是ucs2编码进行编译,重新编译使用ucs4. python:     ./configure --enable-unicode=ucs4        make && ...

  9. 通过excel快速拼接SQL

    “哎,发你一个excel,把这几百条数据修复喽.”经理喊道. “嗯,好的!” 正在看资料的我被经理临时分的任务打断,搞吧!这就是我平时中的一个工作场景. 工作中总是会遇到要修复数据,数据在excel中 ...

  10. MySQL二进制日志文件过期天数设置说明

    今天在处理业务库中二进制文件的时候,想更改二进制文件的过期天数,发现日期如果设置成2位以上的整数.都会出现如下的警告.不能成功的设置过期日期天数.MySQL版本从5.1到5.5都是一样的. mysql ...