真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解react-redux插件入門

可先查看我的redux簡單入門

成都創(chuàng)新互聯(lián)公司專注于光明企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城系統(tǒng)網(wǎng)站開發(fā)。光明網(wǎng)站建設(shè)公司,為光明等地區(qū)提供建站服務(wù)。全流程按需設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

react-redux簡介

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

描述

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

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

安裝

npm i react-redux --save

使用

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

代碼結(jié)構(gòu)

//index.js

import 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(
  
    
  ,
  document.getElementById('root')
);

registerServiceWorker();

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

//app.js

import React, { Component } from 'react';
import { addCreator, removeCreator, addAsync } from './index.redux';
import { connect } from 'react-redux';
class App extends Component {
 render() {
  return (
   

現(xiàn)在有美女{this.props.num}個。

); } } //定義把state中哪個屬性放到props中 function mapStateToProps(state) { return { num: state } } //定義把哪些方法放到props中 const actionCreators={ addCreator, removeCreator, addAsync }; //connect其實就是一個高階組件,把app傳進(jìn)去,返回一個新的app組件 App = connect(mapStateToProps, actionCreators)(App); export default App;

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

下面是reducer的定義。

//react.redux.js

const 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);
  }
}

使用裝飾器的方式更優(yōu)雅的寫Conect

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

安裝

npm i babel-plugin-transform-decorators-legacy --save-dev 這個只是開發(fā)使用,所以安裝到--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環(huán)境),打開用戶設(shè)置窗口,在搜索框內(nèi)輸入“experimentalDecorators”,發(fā)現(xiàn)竟然能夠找到選項,如下:

"javascript.implicitProjectConfig.experimentalDecorators": false

改成true就可以了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)站欄目:詳解react-redux插件入門
轉(zhuǎn)載來源:http://weahome.cn/article/pjjggs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部