Home Web Front-end JS Tutorial Detailed analysis of the connect() method in react-redux in JavaScript skills

Detailed analysis of the connect() method in react-redux in JavaScript skills

May 28, 2017 am 10:30 AM

connect() is one of the core methods in React-redux. It truly connects the react components and the stores in redux together. The following article mainly introduces you to react-redux. The relevant information about the connect() method is introduced in great detail in the article, which has certain reference and learning value for everyone. Friends who need it can take a look below.

Component

React-Redux divides all components into two major categories: display components (UI components), container components

The display component has the following characteristics:

  • It is only responsible for the presentation of the UI and does not have any business logic

  • No state (i.e. do not use this.state this variable)

  • All data is determined by the parameter ( this.props) Provides

  • without using any ReduxAPI

Container components have the following characteristics:

  • Responsible for managing data and business logic, not responsible for UI presentation

  • With internal state

  • API using Redux

Summary to one point: The display component is responsible for the presentation of the UI, and the container component is responsible for managing data and logic

Connect method analysis

The following picture is the concept diagram of connect()

can be simply summarized as the following points:

  • mapStateToProps must be a function as input logic ,

  • mapDispatchToProps can be funciton, or object, as output,

connect() signature

connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])

Connect React components and Redux store.

The connection operation will not change the original component class, but will return a new component class that is connected to the Redux store.

Parameters

1, [mapStateToProps(state, [ownProps]): stateProps] (Function): If Define this parameter and the component will listen for changes in the Redux store. Any time the Redux store changes, mapStateToProps Function will be called. The callback function must return a pure object, which will be merged with the component's props. If you omit this parameter, your component will not listen to the Redux store. If the second parameter ownProps in this callback function is specified, the value of this parameter is the props passed to the component, and mapStateToProps is also called whenever the component receives new props.

2, [mapDispatchToProps(dispatch, [ownProps]): dispatchProps] (<a href="http://www.php.cn/wiki/60.html" target="_blank">Object</a> or Function) : If an object is passed, then each definition is in The functions of this object will be regarded as Redux action creator, and this object will be bound to the Redux store, and the method name defined in it will be merged into the component as the attribute name in the props. If you pass a function, the function will receive a dispatch function, and then it is up to you to decide how to return an object that is somehow bound to the action creator via the dispatch function (hint: you may use Redux Auxiliary function bindActionCreators() ). If you omit the mapDispatchToProps parameter, dispatch will be injected into your component props by default. If the second parameter ownProps in the callback function is specified, the value of this parameter is the props passed to the component, and mapDispatchToProps will also be called whenever the component receives new props.

3, [mergeProps(stateProps, dispatchProps, ownProps): props] (Function): If this parameter is specified, the execution results of mapStateToProps() and mapDispatchToProps() and the props of the component itself will be passed into this callback function. The object returned by this callback function will be passed as props to the wrapped component. You might be able to use this callback function to filter part of the state data based on the component's props, or to bind a specific variable in the props to the action creator. If you omit this parameter, the result of Object.assign({}, ownProps, stateProps, dispatchProps) is returned by default.

4, [options] (Object) If you specify this parameter, you can customize the behavior of the connector.

[pure = true] (Boolean) : If true, the connector will execute shouldComponentUpdate and shallowly compare the results of mergeProps to avoid unnecessary Update , the premise is that the current component is a "pure" component, which does not depend on any input or state but only relies on props and the state of the Redux store. The default value is true.

[withRef = false] (Boolean) : If true, the connector will save a reference to the wrapped component instance, which is passed getWrappedInstance() method to obtain. The default value is false

Return value

According to the configuration information, return a React component injected with state and action creator.

The container component uses the connect() method to connect to Redux

We use the connect() method provided by react-redux to "clumsy" Counter is converted into a container component. connect() allows you to specify the exact state from the Redux store to the component you want to fetch. This allows you to obtain data at any level of granularity.

Let's take a look, we have a display component, which has a value passed through props, and a function onIncrement, which will be called when you click the "Increment" button This function:


import { Component } from &#39;react&#39;;

export default class Counter extends Component {
 render() {
 return (
  <button onClick={this.props.onIncrement}>
  {this.props.value}
  </button>
 );
 }
}
Copy after login

containers/CounterContainer.js


import { Component } from &#39;react&#39;;
import { connect } from &#39;react-redux&#39;;

import Counter from &#39;../components/Counter&#39;;
import { increment } from &#39;../actionsCreators&#39;;

// 哪些 Redux 全局的 state 是我们组件想要通过 props 获取的?
function mapStateToProps(state) {
 return {
 value: state.counter
 };
}

// 哪些 action 创建函数是我们想要通过 props 获取的?
function mapDispatchToProps(dispatch) {
 return {
 onIncrement: () => dispatch(increment())
 };
}

export default connect(
 mapStateToProps,
 mapDispatchToProps
)(Counter);
Copy after login

Summary

The second bracket after connect is the react component to which prop is to be added. The parameter in the first bracket is the method used to change the prop of the component. The first bracket has two parameters. One parameter is a function that returns an object. The key of the object is the prop attribute of the component and the value is the value of the prop. The second parameter is also a function that returns an object. The key of the object is also the attribute name of the prop. The value is a redux dispatch. When this prop attribute is used to trigger, dispatch will change the value of the state in redux.

The above is the detailed content of Detailed analysis of the connect() method in react-redux in JavaScript skills. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1268
29
C# Tutorial
1244
24
How to implement an online speech recognition system using WebSocket and JavaScript How to implement an online speech recognition system using WebSocket and JavaScript Dec 17, 2023 pm 02:54 PM

How to use WebSocket and JavaScript to implement an online speech recognition system Introduction: With the continuous development of technology, speech recognition technology has become an important part of the field of artificial intelligence. The online speech recognition system based on WebSocket and JavaScript has the characteristics of low latency, real-time and cross-platform, and has become a widely used solution. This article will introduce how to use WebSocket and JavaScript to implement an online speech recognition system.

WebSocket and JavaScript: key technologies for implementing real-time monitoring systems WebSocket and JavaScript: key technologies for implementing real-time monitoring systems Dec 17, 2023 pm 05:30 PM

WebSocket and JavaScript: Key technologies for realizing real-time monitoring systems Introduction: With the rapid development of Internet technology, real-time monitoring systems have been widely used in various fields. One of the key technologies to achieve real-time monitoring is the combination of WebSocket and JavaScript. This article will introduce the application of WebSocket and JavaScript in real-time monitoring systems, give code examples, and explain their implementation principles in detail. 1. WebSocket technology

How to use JavaScript and WebSocket to implement a real-time online ordering system How to use JavaScript and WebSocket to implement a real-time online ordering system Dec 17, 2023 pm 12:09 PM

Introduction to how to use JavaScript and WebSocket to implement a real-time online ordering system: With the popularity of the Internet and the advancement of technology, more and more restaurants have begun to provide online ordering services. In order to implement a real-time online ordering system, we can use JavaScript and WebSocket technology. WebSocket is a full-duplex communication protocol based on the TCP protocol, which can realize real-time two-way communication between the client and the server. In the real-time online ordering system, when the user selects dishes and places an order

How to implement an online reservation system using WebSocket and JavaScript How to implement an online reservation system using WebSocket and JavaScript Dec 17, 2023 am 09:39 AM

How to use WebSocket and JavaScript to implement an online reservation system. In today's digital era, more and more businesses and services need to provide online reservation functions. It is crucial to implement an efficient and real-time online reservation system. This article will introduce how to use WebSocket and JavaScript to implement an online reservation system, and provide specific code examples. 1. What is WebSocket? WebSocket is a full-duplex method on a single TCP connection.

JavaScript and WebSocket: Building an efficient real-time weather forecasting system JavaScript and WebSocket: Building an efficient real-time weather forecasting system Dec 17, 2023 pm 05:13 PM

JavaScript and WebSocket: Building an efficient real-time weather forecast system Introduction: Today, the accuracy of weather forecasts is of great significance to daily life and decision-making. As technology develops, we can provide more accurate and reliable weather forecasts by obtaining weather data in real time. In this article, we will learn how to use JavaScript and WebSocket technology to build an efficient real-time weather forecast system. This article will demonstrate the implementation process through specific code examples. We

Simple JavaScript Tutorial: How to Get HTTP Status Code Simple JavaScript Tutorial: How to Get HTTP Status Code Jan 05, 2024 pm 06:08 PM

JavaScript tutorial: How to get HTTP status code, specific code examples are required. Preface: In web development, data interaction with the server is often involved. When communicating with the server, we often need to obtain the returned HTTP status code to determine whether the operation is successful, and perform corresponding processing based on different status codes. This article will teach you how to use JavaScript to obtain HTTP status codes and provide some practical code examples. Using XMLHttpRequest

How to use insertBefore in javascript How to use insertBefore in javascript Nov 24, 2023 am 11:56 AM

Usage: In JavaScript, the insertBefore() method is used to insert a new node in the DOM tree. This method requires two parameters: the new node to be inserted and the reference node (that is, the node where the new node will be inserted).

JavaScript and WebSocket: Building an efficient real-time image processing system JavaScript and WebSocket: Building an efficient real-time image processing system Dec 17, 2023 am 08:41 AM

JavaScript is a programming language widely used in web development, while WebSocket is a network protocol used for real-time communication. Combining the powerful functions of the two, we can create an efficient real-time image processing system. This article will introduce how to implement this system using JavaScript and WebSocket, and provide specific code examples. First, we need to clarify the requirements and goals of the real-time image processing system. Suppose we have a camera device that can collect real-time image data

See all articles