Maison >interface Web >js tutoriel >Analyse de l'utilisation réelle du projet de plug-in React-Redux

Analyse de l'utilisation réelle du projet de plug-in React-Redux

php中世界最好的语言
php中世界最好的语言original
2018-06-07 11:38:561314parcourir

Cette fois, je vais vous apporter une analyse de l'utilisation réelle du projet de plug-in réagir-redux Quelles sont les précautions pour l'utilisation réelle du projet de plug-in réagir-redux ? Ce qui suit est un cas pratique, jetons un coup d'oeil.

Vous pouvez d'abord consulter mon introduction simple à Redux

L'introduction à React-Redux

React-redux consiste à utiliser redux pour développer React Un plug-in utilisé à l'époque. De plus, Redux n'est pas un produit React. Redux peut également être utilisé dans Vue et Angular. Voici une brève explication de la façon d'utiliser React-Redux. développer réagir.

Description

Ce plug-in peut rendre notre code redux plus concis et plus beau. Je suppose que vous disposez déjà d'un environnement de réaction capable d'afficher Hello World créé à l'aide de create-react-app et que vous avez installé Redux.

Remarque : s'il vient d'être créé à l'aide de create-react-app, vous devez exécuter npm run eject pour afficher les paramètres personnalisés, afin de pouvoir personnaliser la configuration.

Installation

npm i react-redux --save

Utilisation

react-redux fournit deux interfaces importantes : Fournisseur, Connectez-vous, Avec cette prise -in, vous pouvez oublier l'abonnement et la répartition de React-Redux, et ils ne seront plus nécessaires.

Structure du code

//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(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')
);
registerServiceWorker();

La couche la plus externe de l'application dans Provider, transmettez-lui le magasin et utilisez-la uniquement cette fois.

//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 (
   <p 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>
   </p >
  );
 }
}
//定义把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 se charge d'obtenir les paramètres requis par le composant depuis l'extérieur. Après avoir été définies via connect, les propriétés et méthodes placées dans props peuvent être obtenues directement via this.props.

Ce qui suit est la définition du réducteur.

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

Utilisez des décorateurs pour écrire Conect plus élégamment

Vous devez d'abord installer babel-plugin-transform-decorators-legacy et l'ajouter dans la configuration package.json .

Installer

npm i babel-plugin-transform-decorators-legacy --save-dev Ceci est uniquement à des fins de développement, alors installez-le sur --save- dev

Configuration

Configurer l'attribut plugins de babel

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

Modifier la méthode d'écriture d'origine
Utiliser @connect pour la redéfinir et écrivez-le au-dessus de la classe.

//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);

Solution à l'invite du décorateur VS Code "experimentalDecorators"

Cliquez sur le bouton de configuration dans le coin inférieur gauche de Visual Studio Code (ou sur Fichier>Préférences> Configuration, environnement Windows), ouvrez la fenêtre des paramètres utilisateur, saisissez « experimentalDecorators » dans la zone de recherche et constatez que l'option peut être trouvée, comme suit :

"javascript.implicitProjectConfig.experimentalDecorators": false

Remplacez-la simplement par true.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Comment utiliser Vue pour créer un proxy

Utilisez jquery pour obtenir le contenu spécifique du fichier téléchargé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn