项目环境搭建

  使用create-react-app

CSS使用styled-components

  yarn add styled-components

引入reset.css样式

  import { createGlobalStyle } from 'styled-components'

  export const GlobalStyle = createGlobalStyle ` `
  然后在App.js中引入GlibalStyle组件
引入iconfont
  配置跟reset.css一样
引入react-transition-group
   实现组件动画效果
引入redux  react-redux
  如何配置 首先创建store 文件夹   index.js   reducer.js只一个纯函数
  然后App.js引入Provider  store
  接着在组件中使用connect做连接    connect(mapStateToProps, mapDispathcToProps)(Header)
使用redux-devtool-extension插件
  https://github.com/zalmoxisus/redux-devtools-extension
  如何使用 
  import { createStore, applyMiddleware, compose } from 'redux';

+ const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
+ const store = createStore(reducer, /* preloadedState, */ composeEnhancers(
- const store = createStore(reducer, /* preloadedState, */ compose(
applyMiddleware(...middleware)
));

使用combineReducer对reducer拆分

  修改store下的reducer.js代码

import { combineReducers } from 'redux'
import { reducer as headerReducer} from '../components/header/store' export default combineReducers({
header: headerReducer
})

使用actionCreators.js和actionTypes.js对store代码优化

使用immutable.js和redux-immutable

  yarn add redux-immutable

  生成的immutable对象,改对象不可改变

  yarn add immutable

  如何使用

import {fromJS} from 'immutable'

const defaultState = fromJS({
focused: false
})
const mapStateToProps = state => {
return {
focused:state.header.get('focused')
}
}
export default (state = defaultState, action) => {
if (action.type === actionTypes.SEARCH_BLUR) {
return state.set('focused', false)
}
if (action.type === actionTypes.SEARCH_FOCUS) {
return state.set('focused', true)
}
return state
}

使用redux-thunk

  异步操作不在componentDidMount中操作

  放到action

  yarn add redux-thunk

后端使用koa koa-router  koa-cors mock

  模拟后端服务器

前端使用axios

  跨域配置  "proxy": "http://localhost:8080"

安装react-router-dom  

  import {BrowserRouter, Route} from 'react-router-dom'

  <BrowserRouter>
    <div>
      <Header/>
      <Route path="/" exact component={Home}/>
      <Route path="/detail/:id" exact component={Detail}/>
    </div>
  </BrowserRouter>

  获得pathname

    const {pathname} = this.props.location

  页面跳转

    this.props.history.push('/')

  页面重定向

    <Redirect from='/...' to='/...' />

React开发笔记的更多相关文章

  1. React Native 开发笔记

    ReactNativeDemo 学习ReactNative开发,搭建ReactNative第一个项目 React Native 开发笔记 1.安装Homebrew $ /usr/bin/ruby -e ...

  2. Webpack笔记(二)——搭建React开发环境

    前几天一直在学习webpack,总算比之前学习的时候有了点收获,所以在昨天发布了一篇webpack入门笔记,今天继续使用webpack练了练手,搭建了一个React开发环境,如果还不熟悉的童鞋可以看一 ...

  3. react学习笔记(一)用create-react-app构建 React 开发环境

    React 可以高效.灵活的用来构建用户界面框架,react利用高效的算法最小化重绘DOM. create-react-app 是来自于 Facebook,通过该命令不需配置就能快速构建 React ...

  4. React笔记01——React开发环境准备

    1 React简介 2013年由Facebook推出,代码开源,函数式编程.目前使用人数最多的前端框架.健全的文档与完善的社区. 官网:reactjs.org 阅读文档:官网中的Docs React ...

  5. React学习笔记--程序调试

    React学习笔记 二 程序调试   前面我们搭建好了React的基本开发环境,可以编写基本的React js程序了.但完成的开发环境肯定包含调试器,怎么调试用React编写的JS程序呢?有浏览器,比 ...

  6. react系列笔记1 用npx npm命令创建react app

    react系列笔记1 用npx npm命令创建react app create-react-app my-app是开始构建新的 React 单页应用程序的最佳方式.它已经为你设置好了开发环境,以便您可 ...

  7. React学习笔记 - Hello World

    React Learn Note 1 React学习笔记(一) 标签(空格分隔): React JavaScript 前.Hello World 1. 创建单页面应用 使用Create React A ...

  8. react自学笔记总结不间断更新

    React React 是由Facfbook维护的一套框架,并且引用到instagram React只是我们熟悉MVC框中的V层,只是视图层面的一个框架,只有俩个半api(createClass,cr ...

  9. [开发笔记]-未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出【转载自:酷小孩】

    原文地址:http://www.cnblogs.com/babycool/p/3199158.html 今天打算用VisualStudio2012做一个js效果页面测试的时候,打开VS2012新建项目 ...

随机推荐

  1. linux c使用socket进行http 通信,并接收任意大小的http响应(五)

    http.c data2.c http_url.c http.h data2.h http_url.h主要实现的功能是通过URL结构体来实现HTTP通信,你可以把这三个文件独立出来,作为HTTP通信模 ...

  2. Linux c读取系统内存使用信息

    系统的内存使用信息能够在虚拟文件系统/proc/meminfo中找到,如图 所以只要打开/proc/meminfo文件,然后从中读取信息就好了 #include <stdio.h>#inc ...

  3. golang 报错illegal rune literal

    记录一下,今天运行一端代码遇到这个报错"illegal rune literal",代码如下: func main() { http.HandleFunc('/login', lo ...

  4. 为你详解Linux安装GCC方法

    下载: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2浏览: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/查 ...

  5. 因mybatis逆向工程而产生的问题

    今天我在搭建SSM框架环境时,配置都配好了,就等运行测试,谁知道一来就报错,并且这个错误折腾了我一下午,真的是血的教训:   BeanCreationException:Error creating ...

  6. OSI七层模型与TCP/IP五层模型(转)

    reference:https://www.cnblogs.com/qishui/p/5428938.html         博主是搞是个FPGA的,一直没有真正的研究过以太网相关的技术,现在终于能 ...

  7. MYSQL-8.0.11-WINX64(免安装版)配置

    1. 解压zip包到安装目录 首先,将mysql-8.0.11-winx64.zip 解压缩到 安装D:/mysql-8.0.11-winx64 目录下, 2.配置文件 在安装根目录下添加 my.in ...

  8. 第二周例行报告psp

    此作业要求详见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2127 (1)psp表 本周进度条 累计进度图 本周PSP饼状图

  9. 获取Ueditor里面的图片列表,地址绝对化

    /**     * 内容中图片地址转成绝对地址     * @param $content     * @return mixed     */    private function imgUrl( ...

  10. Mysql 复制一个新表

    1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来 ...