React中redux的使用

image.png

组件目录结果

image.png

components: Count/ index.jsx

import React, { Component } from 'react'
//引入action
import {
    increment,
    decrement,
    incrementAsync
} from '../../redux/actions/count'
//引入connect用于连接UI组件与redux
import {connect} from 'react-redux'

//定义UI组件
class Count extends Component {

    state = {carName:'奔驰c63'}

    //加法
    increment = ()=>{
        const {value} = this.selectNumber
        this.props.increment(value*1)
    }
    //减法
    decrement = ()=>{
        const {value} = this.selectNumber
        this.props.decrement(value*1)
    }
    //奇数再加
    incrementIfOdd = ()=>{
        const {value} = this.selectNumber
        if(this.props.count % 2 !== 0){
            this.props.increment(value*1)
        }
    }
    //异步加
    incrementAsync = ()=>{
        const {value} = this.selectNumber
        this.props.incrementAsync(value*1,500)
    }

    render() {
        //console.log('UI组件接收到的props是',this.props);
        return (
            

我是Count组件,下方组件总人数为:{this.props.renshu}

当前求和为:{this.props.count}

         
) } } //使用connect()()创建并暴露一个Count的容器组件 export default connect( state => ({ count:state.count, personCount:state.persons.length }), {increment,decrement,incrementAsync} )(Count)

components: Person/ index.jsx

import React, { Component } from 'react'
import {nanoid} from 'nanoid'
import {connect} from 'react-redux'
import {addPerson} from '../../redux/actions/person'

class Person extends Component {

    addPerson = ()=>{
        const name = this.nameNode.value
        const age = this.ageNode.value*1
        const personObj = {id:nanoid(),name,age}
        this.props.addPerson(personObj)
        this.nameNode.value = ''
        this.ageNode.value = ''
    }

    render() {
        return (
            

我是Person组件,上方组件求和为{this.props.count}

this.nameNode = c} type="text" placeholder="输入名字"/> this.ageNode = c} type="text" placeholder="输入年龄"/>
    { this.props.persons.map((p)=>{ return
  • {p.name}--{p.age}
  • }) }
) } } export default connect( state => ({ persons:state.persons, count:state.count }),//映射状态 {addPerson}//映射操作状态的方法 )(Person)

redux : action reducers constant.js store.js
action/ count.js

image.png

action/ person.js
image.png

reducers/ count.js
image.png

reducers/ person.js
image.png

reducers/ index.js
image.png

redux/ constant.js
image.png

redux/ store.js
image.png

app.jsx
image.png

index.js
image.png

你可能感兴趣的:(React中redux的使用)