欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用React?Redux實(shí)現(xiàn)React組件之間的數(shù)據(jù)共享

 更新時(shí)間:2024年03月22日 09:54:50   作者:JudithHuang  
在復(fù)雜的React應(yīng)用中,組件之間的數(shù)據(jù)共享是必不可少的,為了解決這個(gè)問題,可以使用React?Redux來管理應(yīng)用的狀態(tài),并實(shí)現(xiàn)組件之間的數(shù)據(jù)共享,在本文中,我們將介紹如何使用React?Redux實(shí)現(xiàn)Count和Person組件之間的數(shù)據(jù)共享,需要的朋友可以參考下

實(shí)現(xiàn)React組件之間的數(shù)據(jù)共享:使用React Redux

在復(fù)雜的React應(yīng)用中,組件之間的數(shù)據(jù)共享是必不可少的。為了解決這個(gè)問題,可以使用React Redux來管理應(yīng)用的狀態(tài),并實(shí)現(xiàn)組件之間的數(shù)據(jù)共享。在本文中,我們將介紹如何使用React Redux實(shí)現(xiàn)Count和Person組件之間的數(shù)據(jù)共享。

1. 準(zhǔn)備工作

首先,我們需要安裝React Redux和相關(guān)的依賴:

npm install react-redux redux redux-thunk --save

2. 創(chuàng)建Redux Store

Redux Store是一個(gè)存儲(chǔ)應(yīng)用程序狀態(tài)的容器,它提供了一種統(tǒng)一管理狀態(tài)的機(jī)制。在創(chuàng)建Redux Store之前,我們需要先定義應(yīng)用程序的狀態(tài)結(jié)構(gòu),并編寫相應(yīng)的Reducer函數(shù)來處理狀態(tài)的變化。接下來,讓我們一步步創(chuàng)建Redux Store。

2.1. 定義狀態(tài)結(jié)構(gòu)

在開始創(chuàng)建Redux Store之前,我們需要定義應(yīng)用程序的狀態(tài)結(jié)構(gòu)。在這個(gè)示例中,我們的應(yīng)用程序包含兩個(gè)主要的狀態(tài):count和persons。count狀態(tài)用于存儲(chǔ)計(jì)數(shù)器的值,而persons狀態(tài)用于存儲(chǔ)人員信息列表。我們可以在reducers/count.js和reducers/person.js中定義這些狀態(tài)的初始值和處理方法。

// reducers/count.js
import { COUNT_ADD } from '../constant';

const initState = 0;

export default function CountReducer(preState = initState, action) {
  const { type, data } = action;
  switch (type) {
    case COUNT_ADD:
      const { value1, value2 } = data;
      return value1 + value2;
    default:
      return preState;
  }
}

// reducers/person.js
import { PERSON_ADD } from '../constant';

const initState = [];

export default function PersonReducer(preState = initState, action) {
  const { type, data } = action;
  switch (type) {
    case PERSON_ADD:
      return [data, ...preState];
    default:
      return preState;
  }
}

2.2. 創(chuàng)建Redux Store

現(xiàn)在我們可以開始創(chuàng)建Redux Store了。Redux提供了一個(gè)createStore函數(shù)用于創(chuàng)建Redux Store,我們需要將應(yīng)用程序的所有Reducer函數(shù)傳入createStore中,并可選地使用applyMiddleware函數(shù)來應(yīng)用中間件。

// store.js
import { createStore, applyMiddleware, combineReducers } from 'redux';
import thunk from 'redux-thunk';

import countReducer from './reducers/count';
import personReducer from './reducers/person';

// 組合所有的Reducer
const rootReducer = combineReducers({
  count: countReducer,
  persons: personReducer,
});

// 創(chuàng)建Redux Store,并應(yīng)用中間件
const store = createStore(rootReducer, applyMiddleware(thunk));

export default store;

通過上述步驟,我們成功創(chuàng)建了Redux Store,并且應(yīng)用了中間件?,F(xiàn)在我們可以在應(yīng)用程序中使用這個(gè)Redux Store來存儲(chǔ)和管理應(yīng)用程序的狀態(tài)了。

3. 創(chuàng)建Count組件

Count組件用于展示一個(gè)加法計(jì)算器,并實(shí)現(xiàn)與Redux Store的連接。我們使用connect函數(shù)將Count組件與Redux Store連接起來,并實(shí)現(xiàn)數(shù)據(jù)共享:

// containers/Count/index.jsx
import { connect } from 'react-redux';
import React, { Component } from 'react';
import { InputNumber, Button } from 'antd';

import { createAsyncAddAction } from '../../actions/count';

class CountUI extends Component {
  state = {
    value1: 0,
    value2: 0,
  }

  add = () => {
    const { value1, value2 } = this.state;
    this.props.add({ value1, value2 });
  }

  render() {
    const { value1, value2 } = this.state;
    const { total, persons } = this.props;

    return (
      <div>
        <h2>我是Count組件,Person組件的錄入人數(shù)是:{persons.length}</h2>
        <InputNumber value={value1} onChange={ val => this.setState({ value1: val }) } /> +
        <InputNumber value={value2} onChange={ val => this.setState({ value2: val }) } />
        <Button type="link" onClick={this.add}>=</Button>
        {total}
      </div>
    )
  }
}

export default connect(
  state => ({ total: state.count, persons: state.persons }),
  {
    add: createAsyncAddAction,
  }
)(CountUI);

4. 創(chuàng)建Person組件

Person組件用于展示一個(gè)人員信息表格,并實(shí)現(xiàn)與Redux Store的連接。我們同樣使用connect函數(shù)將Person組件與Redux Store連接起來,實(shí)現(xiàn)數(shù)據(jù)共享:

// containers/Person/index.jsx
import React, { Component } from 'react';
import { Input, Button, Table } from 'antd';
import { nanoid } from 'nanoid';
import { connect } from 'react-redux';

import { createAddAction } from '../../actions/person';

const columns = [
  {
    title: '姓名',
    dataIndex: 'name',
    key: 'name',
  },
  {
    title: '年齡',
    dataIndex: 'age',
    key: 'age',
  },
];

class Person extends Component {
  state = {
    name: '',
    age: '',
  }

  add = () => {
    const { name, age } = this.state;
    const person = { key: nanoid(), name, age };
    this.props.add(person);
    this.setState({ name: '', age: '' });
  }

  render() {
    const { persons, total } = this.props;
    const { name, age } = this.state;

    return (
      <div>
        <h2>我是Person組件,Count組件的求和結(jié)果是{total}</h2>
        <Input
          placeholder="姓名"
          value={name}
          onChange={e => this.setState({ name: e.target.value })}
        />
        <Input
          placeholder="年齡"
          value={age}
          onChange={e => this.setState({ age: e.target.value })}
        />
        <Button onClick={this.add} type="primary">添加</Button>
        <Table dataSource={persons} columns={columns} />
      </div>
    )
  }
}

export default connect(
  state => ({ persons: state.persons, total: state.count }),
  {
    add: createAddAction,
  }
)(Person);

5. 整合React組件

最后,我們?cè)趹?yīng)用的入口文件中將Count和Person組件放置在Provider組件中,以便整個(gè)應(yīng)用可以訪問Redux Store中的狀態(tài):

// App.jsx
import React, { Component } from 'react';
import { Provider } from 'react-redux';

import store from './store';
import Count from './containers/Count';
import Person from './containers/Person';

export default class App extends Component {
  render() {
    return (
      <Provider store={store}>
        <Count />
        <hr />
        <Person />
      </Provider>
    )
  }
}

結(jié)語

通過以上步驟,我們成功實(shí)現(xiàn)了React組件之間的數(shù)據(jù)共享。Count組件和Person組件通過Redux Store共享數(shù)據(jù),實(shí)現(xiàn)了狀態(tài)的統(tǒng)一管理和更新。這種基于React Redux的數(shù)據(jù)管理方式,能夠有效地提高應(yīng)用的可維護(hù)性和擴(kuò)展性,是構(gòu)建復(fù)雜應(yīng)用的一種有效方式。

參考

以上就是使用React Redux實(shí)現(xiàn)React組件之間的數(shù)據(jù)共享的詳細(xì)內(nèi)容,更多關(guān)于React Redux組件數(shù)據(jù)共享的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React中refs的一些常見用法匯總

    React中refs的一些常見用法匯總

    Refs是一個(gè) 獲取 DOM節(jié)點(diǎn)或React元素實(shí)例的工具,在React中Refs 提供了一種方式,允許用戶訪問DOM 節(jié)點(diǎn)或者在render方法中創(chuàng)建的React元素,這篇文章主要給大家介紹了關(guān)于React中refs的一些常見用法,需要的朋友可以參考下
    2021-07-07
  • webpack手動(dòng)配置React開發(fā)環(huán)境的步驟

    webpack手動(dòng)配置React開發(fā)環(huán)境的步驟

    本篇文章主要介紹了webpack手動(dòng)配置React開發(fā)環(huán)境的步驟,webpack手動(dòng)配置一個(gè)獨(dú)立的React開發(fā)環(huán)境, 開發(fā)環(huán)境完成后, 支持自動(dòng)構(gòu)建, 自動(dòng)刷新, sass語法 等功能...感興趣的小伙伴們可以參考一下
    2018-07-07
  • 詳解React setState數(shù)據(jù)更新機(jī)制

    詳解React setState數(shù)據(jù)更新機(jī)制

    這篇文章主要介紹了React setState數(shù)據(jù)更新機(jī)制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用React框架,感興趣的朋友可以了解下
    2021-04-04
  • React內(nèi)存泄漏的常見原因及避免策略

    React內(nèi)存泄漏的常見原因及避免策略

    內(nèi)存泄漏是指程序中分配的內(nèi)存未能正確釋放,導(dǎo)致內(nèi)存占用不斷增加,最終可能影響應(yīng)用性能甚至崩潰,在React中,內(nèi)存泄漏常發(fā)生于組件卸載后,本文將詳細(xì)介紹內(nèi)存泄漏在React中的常見原因及避免策略,需要的朋友可以參考下
    2025-03-03
  • react 父組件與子組件之間的值傳遞的方法

    react 父組件與子組件之間的值傳遞的方法

    本篇文章主要介紹了react 父組件與子組件之間的值傳遞的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • JavaScript中React面向組件編程(上)

    JavaScript中React面向組件編程(上)

    本文主要介紹了React組件中默認(rèn)封裝了很多屬性,有的是提供給開發(fā)者操作的,其中有三個(gè)屬性非常重要:state、props、refs。感興趣的小伙伴可以參考閱讀
    2023-03-03
  • React之虛擬DOM的實(shí)現(xiàn)原理

    React之虛擬DOM的實(shí)現(xiàn)原理

    這篇文章主要介紹了React之虛擬DOM的實(shí)現(xiàn)原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • create-react-app修改為多頁面支持的方法

    create-react-app修改為多頁面支持的方法

    本篇文章主要介紹了create-react-app修改為多頁面支持的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • 一文搞懂redux在react中的初步用法

    一文搞懂redux在react中的初步用法

    Redux是JavaScript狀態(tài)容器,提供可預(yù)測(cè)化的狀態(tài)管理,今天通過本文給大家分享redux在react中使用及配置redux到react項(xiàng)目中的方法,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • 詳解React中錯(cuò)誤邊界的原理實(shí)現(xiàn)與應(yīng)用

    詳解React中錯(cuò)誤邊界的原理實(shí)現(xiàn)與應(yīng)用

    在React中,錯(cuò)誤邊界是一種特殊的組件,用于捕獲其子組件樹中發(fā)生的JavaScript錯(cuò)誤,并防止這些錯(cuò)誤冒泡至更高層,導(dǎo)致整個(gè)應(yīng)用崩潰,下面我們就來看看它的具體應(yīng)用吧
    2024-03-03

最新評(píng)論