4 react 简书 引入 redux 的 combineReducers 对 redux 数据进行管理
1. src 下的 common 下的 header 创建 store 文件夹 下创建 reducer.js
# src/common/header/store/reducer.js
const stateDefault = {
focused : false
};
export default (state = stateDefault, action)=>{
if(action.type === 'focus' || action.type === 'blur'){
const newState = JSON.parse(JSON.stringify(state));
newState.focused = action.focused;
return newState;
}
return state;
}
2. 添加 redux-devtools-extension 拓展 并 创建 src/store/index.js 对 redux 数据进行监听
(未装 redux 拓展 , 使用 yarn add redux 进行安装)
yarn add redux-devtools-extension
# src/store/index.js
3. 创建 src/store/reduct.js 使用 redux 的 对 header 的 reducer 数据进行管理
# src/store/reduct.js
import { combineReducers } from 'redux';
import headerReducer from '../common/header/store';
export default combineReducers({
header : headerReducer
});
4. 修改 src/App.js 使 app 下的全部组件支持 store 数据存取
(未装 redux 拓展 , 使用 yarn add react-redux 进行安装)
#src/App.js
import React from 'react';
import Header from './common/header';
import store from './store';
import {Provider} from 'react-redux';
function App() {
return (
<div>
<Provider store={store}>
<Header />
</Provider>
</div>
);
}
export default App;
5. 修改 src/common/header/index.js 组件的引入路径
#src/common/header/index.js
import React from 'react';
import {CSSTransition} from 'react-transition-group';
import {connect} from 'react-redux';
import {
HeaderWrapper,
Logo,
Nav,
NavItem,
SearchWrapper,
NavSearch,
Addtion,
Button
} from './style';
const Header = (props)=>{
return (
<HeaderWrapper>
<Logo />
<Nav>
<NavItem className="left active">首页</NavItem>
<NavItem className="left">下载</NavItem>
<NavItem className="right">登陆</NavItem>
<NavItem className="right">
<span className="iconfont"></span>
</NavItem>
<SearchWrapper>
<CSSTransition
in={props.focused}
timeout={200}
classNames='slide'
>
<NavSearch
className={props.focused? 'focused' : ''}
onFocus={props.searchFocus}
onBlur={props.searchBlur}
></NavSearch>
</CSSTransition>
<span className={props.focused? 'focused iconfont' : 'iconfont'}></span>
</SearchWrapper>
</Nav>
<Addtion>
<Button className='writting'>
<span className="iconfont"></span>
写文章
</Button>
<Button className='reg'>注册</Button>
</Addtion>
</HeaderWrapper>
);
}
const PropsToState = (state)=>{
return {
focused : state.header.focused
}
}
const PropsToDispatch = (dispatch)=>{
return {
searchFocus(){
const action = {
type : 'focus',
focused : true
}
dispatch(action);
},
searchBlur(){
const action = {
type : 'blur',
focused : false
}
dispatch(action);
}
}
}
export default connect(PropsToState, PropsToDispatch)(Header);
4 react 简书 引入 redux 的 combineReducers 对 redux 数据进行管理的更多相关文章
- react 简书开发笔记
详见文章<React简书开发实战课程笔记>
- React 简书
create-react-app jianshu yarn add styled-components -D 利用js写css样式 样式会更高效 https://github.com ...
- react简书
开发项目之前的准备 https://www.chromefor.com/ 登录此网站 下载相关crx react插件 不然要FQ 下载 React Developer Tools 谷歌插件下载 Re ...
- react简书笔记一 环境, git 和 项目 关联
1.. 建立git项目 ( 码云, github 都可以 ), 具体步骤: https://www.cnblogs.com/andy-lehhaxm/p/10720717.html 1.1 git ...
- 2. react 简书 头部(header) 图标添加
1. 访问 iconfont 并注册 登陆 2. 进入 iconfont 头部 图标管理->我的项目 3. 点击右边的文件夹 + 号 图标 创建我的项目 输入项目名称即可 4.在 搜索框 搜索 ...
- 3 react 简书 添加 头部搜索动态效果
1. 添加动态效果组件 yarn add react-transition-group 2. 修改 src/common/header/index.js import React, {Componen ...
- 2. react 简书 头部 (header) 样式编写
1. 在 src 下 创建 common 文件下 创建 header 文件夹下 创建 index.js #src/common/header/index.js import React, {Compo ...
- 1. react 简书 项目初始化
1. 创建 react 项目 npx create-react-app my-app 2. src 目录下删除 除了 index.js index.css app.js 的文件 3. 引入 style ...
- react项目中引入了redux后js控制路由跳转方案
如果你的项目中并没有用到redux,那本文你可以忽略 问题引入 纯粹的单页面react应用中,通过this.props.history.push('/list')就可以进行路由跳转,但是加上了redu ...
随机推荐
- 前端面试题CSS一(题目来源网络)
一.什么是html5语义化? 使用合理,正确的html标签格式化文档. 二.CSS样式优先级? 就近原则,行内>内联>外联 三 什么是盒模型? 主要分为两种,w3c标准盒模型,IE标准模型 ...
- mysql5.7.26安装
h https://www.cnblogs.com/zgqbky/p/11699282.html 张国强(明了) tar -xf mysql-5.7.26-1.el7.x86_64.rpm-bundl ...
- Ubuntu 16.04.4下安装apache服务
Ubuntu 16.04.4下安装apache服务: 一.首先,准备需要的预装环境 需要c++,make,gcc,apr apr-util pcre.(如果后面报错缺少什么组件,可以百度搜方法. ...
- Echarts 折线图y轴标签值过长 显示
参考: https://blog.csdn.net/dandelion_drq/article/details/79270597 改变Y轴单位:https://www.cnblogs.com/cons ...
- C语言学习巩固(泛型选择)
在程序设计中,没有特定类型,但是一旦指定一种类型,就可以转换成指定类型的代码, 例如C++有一个关键tmeplate关键字用于声明模板,而模板的最大应用便是创建泛型算法.可惜的是c没有这个关键字 但是 ...
- Rancher概述
概述 What’s Rancher? Rancher是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器. Rancher可以轻松地管理各种环境的Kubernetes,满足IT需求并 ...
- 论文阅读:Blink-Fast Connectivity Recovery Entirely in the Data Plane
1.背景 在网络中,链路故障的发生在所难免,为了降低故障带来的影响,就需要重新路由,将数据传输到合适的链路上.当因为链路故障发生处的不同,也有不同的解决方法. AS(Autonomous System ...
- vue的自定义
自定义组件 组件是可以被复用的页面的零件,其实就是一个插件,只是在vue里叫组件 先看看别人的组件 vant element Mint iView 去试试上面的组件,都是有脚手架版和直接引入使用的版本 ...
- 006.Oracle数据库 , DISTINCT去掉重复项重复内容
/*Oracle数据库查询日期在两者之间*/ SELECT DISTINCT OCCUR_DATE FROM LM_FAULT WHERE ( ( OCCUR_DATE >= to_date( ...
- 吴裕雄--天生自然java开发常用类库学习笔记:线程常用的操作方法
class MyThread implements Runnable{ // 实现Runnable接口 public void run(){ // 覆写run()方法 for(int i=0;i< ...