1. 程式人生 > >react+redux+react-router專案搭建

react+redux+react-router專案搭建

reducer檔案  統一管理

store.js 某一個模組的state

//登入成功
export const LOG_SUCCESS = 'LOG_SUCCESS'
//正在登入
export const LOG_ING = 'LOG_ING'
//登出登入
export const LOG_OUT = 'LOG_OUT'
//主要是統一儲存狀態對應的名稱


/*
*action方法
*action建立函式的意思就是建立一個action的函式,函式返回一個物件
*/

//登出 同步
export function log_out() {
    return {
        type: LOG_OUT
    }
}

//登入 非同步
export function LogIN(obj) {
    return {
        type: LOG_ING,
        payload: obj
    }
}


/*
*dispatch 派發
*
*/

const fetchQuestionData = (payload) => {
    return (dispatch) => {
        console.log(payload)
        dispatch(LogIN(payload))
        
    }
}


export const actions = {
    fetchQuestionData,
}



/*
*reducer
*類似陣列中的reduce
*傳遞一箇舊的state通過加工後產出一個新的state:
*/
//非同步狀態需要使用中介軟體
export default function (state, action) {
    //console.log("11125")
    switch (action.type) {
        case LOG_SUCCESS:
            //console.log(action)
            return Object.assign({}, state, action.payload)
            break
        case LOG_ING:
            //console.log(action)
            let newobj = Object.assign({}, state, action.payload)
            console.log(newobj)
            return newobj
            break
        case LOG_OUT:
            return {}
            break
        default:
            return {
                dd: 123
            }
    }
}

進行所有模組的整合功能reducers.js

import { combineReducers } from 'redux'
//引入某一模組
import reducer from './store'

//整合不同模組的state
const rootReducer = combineReducers({
    reducer
})

export default rootReducer

進行store的建立 及其他需要的功能整合

import { createStore, applyMiddleware } from 'redux'
//redux-thunk中介軟體可以讓action建立函式先不返回一個action物件,而是返回一個函式,
//函式傳遞兩個引數(dispatch,getState),在函式體內進行業務邏輯的封裝
import thunk from 'redux-thunk'
// 利用redux-logger列印日誌
import { createLogger } from 'redux-logger'
// 安裝redux-devtools-extension的視覺化工具。
import { composeWithDevTools } from 'redux-devtools-extension'

// 使用日誌列印方法, collapsed讓action摺疊,看著舒服。
//合併的多個reducer,解耦
import rootReducer from './reducers'
//整理中介軟體
const middlewares = [thunk]
//建立createstore
const createStoreWithMiddleware = applyMiddleware(...middlewares)(createStore)
//丟擲
export default function configureStore(initialState) {
    return createStoreWithMiddleware(rootReducer, initialState, composeWithDevTools(), createLogger({ collapsed: true }))
}

router 路由檔案

import React from 'react'
import { Router, Route, hashHistory } from 'react-router'
import { Provider } from 'react-redux'

// Provider  可以讓容器元件拿到state
// Provider在根元件外面包了一層,這樣一來,App的所有子元件就預設都可以拿到state了。
// 它的原理是React元件的context屬性
import store from '../store/index'
//import App from "../App"
// import Helloword from "../compents/HelloWord/index"
// import Child from "../compents/Child/index"
import Error4 from "../compents/error/index"


const Root = () => {
    return (
        <Provider store={store()}>
            <Router history={hashHistory}>
                {/* 設定IndexRoute後 訪問'/'路徑時,預設載入'Home'元件  */}
                {/* <IndexRoute component={App}/> */}
                <Route path="/"
                    getComponent={(location, cb) => {
                        require.ensure([], require => {
                            cb(null, require('../App').default)
                        }, 'App');
                    }} />
                <Route path="/Helloword"
                    getComponent={(location, cb) => {
                        require.ensure([], require => {
                            cb(null, require('../compents/HelloWord/index').default)
                        }, 'HelloWord');
                    }} />
                <Route path="/Child" getComponent={(location, cb) => {
                    require.ensure([], require => {
                        cb(null, require('../compents/Child/index').default)
                    }, 'Child');
                }} />
                <Route path="/Error4" component={Error4} />
                <Route path="*" component={Error4} />
            </Router>
        </Provider>
    )
}

export default Root

App.js首頁的檔案應用

import React, { Component } from 'react';
import { connect } from 'react-redux'
import { actions } from "./store/store"



class App extends Component {
  // constructor(props){
  //   super(props)
  // }


  click() {
    //呼叫值
    this.props.fetchQuestionData({ kk: 123 });
  }

  render() {
    console.log(this.props)
    return (
      <div className="App">
        <h1 onClick={this.click.bind(this)}>這是APP首頁</h1>
      </div>
    );
  }
}

const mapStateToProps = ({ reducer }) => {
  // console.log(reducer)
  return reducer
}

export default connect(mapStateToProps, actions)(App)

package.json

​​{
  "name": "reactpage",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "prop-types": "^15.6.2",
    "react": "^16.4.1",
    "react-dom": "^16.4.1",
    "react-redux": "^5.0.7",
    "react-router": "^3.2.1",
    "react-scripts": "1.1.4",
    "redux": "^4.0.0",
    "redux-actions": "^2.4.0",
    "redux-thunk": "^2.3.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "devDependencies": {
    "redux-devtools": "^3.4.1",
    "redux-devtools-dock-monitor": "^1.1.3",
    "redux-devtools-extension": "^2.13.5",
    "redux-devtools-log-monitor": "^1.4.0",
    "redux-logger": "^3.0.6"
  }
}
 

相關推薦

react+redux+react-router專案搭建

reducer檔案  統一管理 store.js 某一個模組的state //登入成功 export const LOG_SUCCESS = 'LOG_SUCCESS' //正在登入 export const LOG_ING = 'LOG_ING' //登出登入 expo

實踐webpack+es6+react+redux+antd構建專案(三) 配置proxy代理

上一篇是關於引入react,redux,antd的,專案已經可以正常運行了,但是拿到的都是定義的死資料。這篇文章講一下配置代理,調mock資料。 簡便起見,我使用的是Easy Mock,定義好mock資料,在專案中引入使用。 先說一下Easy Mock的使用方法, 建立一個專案,

實踐webpack+es6+react+redux+antd構建專案(二) reactredux,antd引入

上一篇文章是關於從零構建一個webpack專案,基本已經啟動成功了,這篇文章將會講一下在專案中使用目前最流行的React框架 1、引入babel相關 現代前端基本都是以es6為規範進行開發,所以我們專案中也就需要引入es6。es6是需要使用babel進行轉換的,瀏覽器才能識別 npm

實踐webpack+es6+react+redux+antd構建專案(一) webpack配置

        在網上看到過很多教程,都是從零開始構建一個專案,每次看著都浩浩蕩蕩的開始跟著部落格一步一步走,但是總是很難成功。自己一直想要從零構建一個專案來實踐一下,瞭解一下偏底層的配置。最近比較有時間,就又一次開始了。不過這次沒有盲目的在網上找教程,而

React + Redux 基本框架的搭建以及Demo

前期準備:      Node.js version: v10.14.2 步驟:      1:建立一個空的資料夾,打卡cmd 視窗, 在當前資料夾目錄下,執行 npm init, 在資料夾中會生成一個packadge.json 的檔案 &n

React+Redux開發實戰專案【美團App】,沒你想的那麼難

README.md 前言 開始學習React的時候,在網上找了一些文章,讀了官網的一些文件,後來覺得React上手還是蠻簡單的, 然後就在網上找了一個React實戰的練手專案,個人學完之後覺

React音樂播放器(react+redux+react-router+webpack)

技術:React16,Redux,React-Router,WebPack 專案演示 會點ps,所以自己設計了頁面和互動。現在的資料都是是自己mock的,開發後臺的時候會對接真實資料,由於搜尋、收藏歌單、新建歌單、刪除歌單、收藏單曲、

使用react+redux+react-redux+react-router+axios+scss技術棧從0到1開發一個applist應用

先看效果圖 github地址 github倉庫 線上訪問 初始化專案 #建立專案 create-react-app applist #如果沒有安裝create-react-app的話,先安裝 npm install -g create-react-app 目錄結構改造 |--config |--n

在谷歌瀏覽器中除錯React+Redux構建的專案,找不到原始檔的解決辦法

  前端除錯專案時,專案是基於webpack打包的,所以在谷歌瀏覽器中,只能找到打包後的檔案,而不是打包之前的專案原始檔,這樣不便於前端的除錯。怎麼在Source下開啟想要除錯的檔案呢,有如下解決辦法。   一 、非webpack構建的專案下,快速檢視相關的程式碼     F12開啟除錯面板、開啟source

React Native入門篇—redux react-redux react-navigation-redux-helpers的安裝和配置

注意:未經允許不可私自轉載,違者必究 React Native官方文件:https://reactnative.cn/docs/getting-started/ redux官方文件:https://www.redux.org.cn/ 專案地址GitHub地址:https:/

react-redux (react)

一、Redux與元件   react-redux是一個第三方外掛使我們在react上更方便的來使用redux這個資料架構   React-Redux提供connect方法,用於從UI元件生成容器元件,connect的意思就是將兩種元件連起來   參考文章:https:

初體驗react+redux+react-redux的基本使用方法

看了阮一峰老師的 redux入門教程:http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_one_basic_usages.html看的似懂非懂,自己動手寫個demo來的檢驗一下:這裡關於原理講解,請參照阮老師

React-redux: React.js 和 Redux 架構的結合

通過Redux 架構理解我們瞭解到 Redux 架構的 store、action、reducers 這些基本概念和工作流程。我們也知道了 Redux 這種架構模式可以和其他的前端庫組合使用,而 React-redux 正是把 Redux 這種架構模式和 React.js 結合起來的一個庫。 Context 在

React 16+Redux+React Router 4 Node.Js全棧開發招聘App專案實戰分享

第1章 介紹課程目標和學習內容包括課程概述、課程安排、學習前提、講授方式等方面的介紹,最後演示了整個招聘App的功能,讓同學們對課程專案有一個直觀的瞭解。1-1 課程導學第2章 知識儲備2-1 介紹React開發環境2-2 ES6常用語法2-3 express+mongodb

React 16+Redux+React Router 4 Node.Js全棧開發招聘App專案實戰(雲盤下載)

第1章 介紹課程目標和學習內容包括課程概述、課程安排、學習前提、講授方式等方面的介紹,最後演示了整個招聘App的功能,讓同學們對課程專案有一個直觀的瞭解。1-1 課程導學第2章 知識儲備2-1 介紹React開發環境2-2 ES6常用語法2-3 express+mongodb

react+react-router+react-redux全家桶小專案開發過程分享

react-ele-webapp http://www.jianshu.com/p/a96f6e0b66d1?utm_source=tuicool&utm_medium=referral run 下載完專案npm install 然後npm run dev

react-routerreact-redux跳轉後保存store數據(基於"react-router": "^2.8.0")

spa imp pan item 介紹 評論 tdi else mount 1.router引入 import { Route, IndexRoute, Router, hashHistory, browserHistory } from ‘react-router‘;

react-router搭配react-redux無法監聽路由變化的問題

不必要 默認 cti 傳遞 通過 nbsp fun urn style 在react中,要將react組件連接到redux中,通常會這樣包裝組件 class Home extends Component { } function select(state)

【前端】react學習階段總結,學習reactreact-routerredux的這些事兒

行程 clas 目前 webpack body src 控制 return 體驗 前言   借用阮一峰的一句話:真正學會 React 是一個漫長的過程。 這句話在我接觸react深入以後,更有感觸了。整個react體系都是全新的,最初做簡單的應用,僅僅使用react-to

React+routerreact+redux使用過程的記錄

app.js 描述 集成 關系 route false 操作 之間 ade 1、集成react+redux的場景。 在不同的路由頁面下,控制公共的頭部顯示和隱藏等功能。因為路由和Header之間不是直接的父組件和子組件的關系,所以通過pros傳參滿足不了。這個時候引入red