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構建專案(二) react,redux,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-router與react-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學習階段總結,學習react、react-router與redux的這些事兒
行程 clas 目前 webpack body src 控制 return 體驗 前言 借用阮一峰的一句話:真正學會 React 是一個漫長的過程。 這句話在我接觸react深入以後,更有感觸了。整個react體系都是全新的,最初做簡單的應用,僅僅使用react-to
React+router和react+redux使用過程的記錄
app.js 描述 集成 關系 route false 操作 之間 ade 1、集成react+redux的場景。 在不同的路由頁面下,控制公共的頭部顯示和隱藏等功能。因為路由和Header之間不是直接的父組件和子組件的關系,所以通過pros傳參滿足不了。這個時候引入red