亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

詳解react-redux插件入門

2024-05-06 16:43:48
字體:
來源:轉載
供稿:網友

可先查看我的redux簡單入門

react-redux簡介

react-redux是使用redux開發react時使用的一個插件,另外插一句,redux不是react的產品,vue和angular中也可以使用redux;下面簡單講解,如何使用react-redux來開發react。

描述

這個插件可以讓我們的redux代碼更加的簡潔和美觀。我假設你已經有一個使用create-react-app創建的一個可以顯示hello world的react環境,并且已經安裝來redux。

注意:如果是剛使用create-react-app創建的,需要運行 npm run eject彈出個性化設置,這樣就可以自定義配置了。

安裝

npm i react-redux --save

使用

react-redux提供了兩個重要的接口:Provider、connect,使用了這個插件,react-redux的subscribe和dispatch就可以忘記來,它們就用不著了。

代碼結構

//index.jsimport React from 'react';import ReactDOM from 'react-dom';import './index.css';import App from './App';import registerServiceWorker from './registerServiceWorker';import { createStore, applyMiddleware } from 'redux';import thunk from 'redux-thunk';import { reducer } from './index.redux';import { Provider } from 'react-redux'const store = createStore(reducer, applyMiddleware(thunk));ReactDOM.render(  <Provider store={store}>    <App />  </Provider>,  document.getElementById('root'));registerServiceWorker();

Provider中應用的最外層,把store傳給它,只使用這一次。

//app.jsimport React, { Component } from 'react';import { addCreator, removeCreator, addAsync } from './index.redux';import { connect } from 'react-redux';class App extends Component { render() {  return (   <div className="App">    <h1>現在有美女{this.props.num}個。</h1>    <button onClick={this.props.addCreator}>add</button>    <button onClick={this.props.removeCreator}>remove</button>    <button onClick={this.props.addAsync}>addAsync</button>   </div >  ); }}//定義把state中哪個屬性放到props中 function mapStateToProps(state) {  return { num: state } } //定義把哪些方法放到props中 const actionCreators={ addCreator, removeCreator, addAsync }; //connect其實就是一個高階組件,把app傳進去,返回一個新的app組件 App = connect(mapStateToProps, actionCreators)(App);export default App;

connect負責從外部獲取組件需要的參數。通過connect定義后,放到props中的屬性和方法就可以直接通過this.props來獲取。

下面是reducer的定義。

//react.redux.jsconst Add = 'addGirl', Remove = "removeGirl";export function reducer(state = 0, action) {  switch (action.type) {    case Add:      return state + 1;    case Remove:      return state - 1;    default:      return 10;  }}export function addCreator() {  return { type: Add };}export function removeCreator() {  return { type: Remove };}export function addAsync() {  return (dispatch, getState) => {    setTimeout(function () {      dispatch(addCreator());    }, 1000);  }}

使用裝飾器的方式更優雅的寫Conect

首先需要安裝babel-plugin-transform-decorators-legacy,并在package.json中配置。

安裝

npm i babel-plugin-transform-decorators-legacy --save-dev 這個只是開發使用,所以安裝到--save-dev

配置

配置babel的plugins屬性

 "babel": {  "presets": [   "react-app"  ],  "plugins": [   ["transform-decorators-legacy"]  ] }

修改原來寫法
使用@connect來重新定義,寫到class的上頭即可。

//App.js@connect((state) => ({ num: state }),{ addCreator, removeCreator, addAsync })class App extends Component {.....//省略// function mapStateToProps(state) {//  return { num: state }// }// App = connect(mapStateToProps, { addCreator, removeCreator, addAsync })(App);

VS Code 裝飾器提示“experimentalDecorators”的解決辦法

點擊Visual Studio Code左下角的配置按鈕(或者文件>首選項>配置,Windows環境),打開用戶設置窗口,在搜索框內輸入“experimentalDecorators”,發現竟然能夠找到選項,如下:

"javascript.implicitProjectConfig.experimentalDecorators": false

改成true就可以了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情免费看| 国产999精品视频| 国产精品1234| 欧美国产视频日韩| 777国产偷窥盗摄精品视频| 亚洲成年网站在线观看| 人九九综合九九宗合| 91久久精品美女| 国内久久久精品| 国产玖玖精品视频| 亚洲人成电影网站色xx| 欧美日韩午夜视频在线观看| 中文字幕欧美精品日韩中文字幕| 亚洲老司机av| 一本一本久久a久久精品牛牛影视| 欧美日韩ab片| 国产精品www色诱视频| 亚洲一区二区国产| 日本老师69xxx| 久久在线免费观看视频| 亚洲欧美日韩视频一区| 欧美激情在线狂野欧美精品| 国产精品一区电影| 97视频色精品| 久久久久久久久久婷婷| 欧美成年人视频网站| 国产精品一区二区三区成人| 日韩av电影手机在线| 日韩欧美亚洲国产一区| 国产精品爽爽爽| 国产精品永久免费视频| 欧美成年人在线观看| 国产精品扒开腿做爽爽爽男男| 国产一区二区三区欧美| 成人午夜高潮视频| 欧美激情一区二区三区在线视频观看| 中文字幕国产亚洲2019| 亚洲女人天堂成人av在线| 亚洲天堂网站在线观看视频| 亚洲精品av在线| 欧美另类极品videosbest最新版本| 日韩av在线免费看| 国产精品看片资源| 欧美激情视频在线| 91老司机精品视频| 国产精品夜色7777狼人| 久久国产色av| 91青草视频久久| 日韩日本欧美亚洲| 国产精品一区二区性色av| 国产欧美日韩免费看aⅴ视频| 欧美大片在线影院| 久久免费视频网站| 精品高清一区二区三区| 91大神福利视频在线| 国产伊人精品在线| 亚洲精品456在线播放狼人| 久久中文精品视频| 欧美激情奇米色| 中文字幕亚洲欧美在线| 91丝袜美腿美女视频网站| 久久成人精品一区二区三区| 爽爽爽爽爽爽爽成人免费观看| 中文字幕亚洲综合久久| 疯狂蹂躏欧美一区二区精品| www.国产精品一二区| 97久久精品人人澡人人爽缅北| 欧美性猛交xxxx富婆弯腰| 国产精品视频久久久| 日韩精品在线私人| 欧美亚洲另类在线| 国产精品美女久久久免费| 亚洲欧洲自拍偷拍| 伊人久久久久久久久久久| 国产成人精品久久二区二区91| 国产精品扒开腿做爽爽爽视频| 国产精品流白浆视频| 国内成人精品一区| 亚洲精品一区二区久| 欧美日韩亚洲精品一区二区三区| 亚洲欧美日韩中文在线| 欧美福利在线观看| 久久亚洲国产精品| 中文字幕日韩精品有码视频| 中文字幕日韩精品在线| 亚洲精品电影在线| 91精品国产高清| 国产精品欧美日韩久久| 亚洲最大激情中文字幕| 欧美成人激情视频免费观看| 国产一区二区三区久久精品| 日韩精品视频在线免费观看| 亚洲va欧美va国产综合剧情| 国产精品久久久久久久av电影| 亚洲国产精品高清久久久| 精品亚洲一区二区三区四区五区| 久久精品电影网| 中文字幕一区电影| 国产精品老牛影院在线观看| 日韩电影免费在线观看中文字幕| 亚洲成人久久久| 亚洲欧美国产另类| 2019中文字幕在线| 日本精品视频在线播放| 色综合久久88| 欧美综合国产精品久久丁香| 色婷婷成人综合| 69久久夜色精品国产69乱青草| 亚洲第一精品自拍| 国产不卡一区二区在线播放| 亚洲精品美女网站| 中文字幕久久亚洲| 精品香蕉一区二区三区| 亚洲精品国产拍免费91在线| 国产精品久久激情| 久久男人av资源网站| 在线观看视频99| 日韩av电影在线免费播放| 午夜欧美大片免费观看| 午夜精品一区二区三区在线| 日本视频久久久| 国产精品视频播放| 97精品视频在线播放| 岛国av一区二区| 久久成人人人人精品欧| 久久亚洲电影天堂| 亚洲国内高清视频| 亚洲aⅴ日韩av电影在线观看| 日韩免费中文字幕| 国产精品丝袜一区二区三区| 高清日韩电视剧大全免费播放在线观看| 日韩在线视频免费观看高清中文| 日韩视频永久免费观看| 中日韩午夜理伦电影免费| 欧美成年人视频网站| 裸体女人亚洲精品一区| 最近2019中文字幕在线高清| 成人激情视频网| 国内精品中文字幕| 久久久久久久av| 美女黄色丝袜一区| 97婷婷涩涩精品一区| 亚洲三级黄色在线观看| 亚洲国产成人在线视频| 亚洲系列中文字幕| 国产成人av在线| 91久久精品在线| 欧日韩不卡在线视频| 视频在线观看99| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲黄在线观看| 奇米成人av国产一区二区三区| 91av在线不卡| 欧美性理论片在线观看片免费| 91亚洲精品久久久久久久久久久久| 成人国产精品免费视频| www.欧美视频| 国产999精品久久久| 亚洲最大激情中文字幕| 亚洲另类欧美自拍| 精品色蜜蜜精品视频在线观看| 亚洲欧美激情精品一区二区| 久久久在线视频| 91在线观看免费高清完整版在线观看|