17-Action Payload

Time: 20200129

在前面React-Redux項目中,我們設定的Action還沒包含有用的信息。

一般我們約定action為下面的格式:

{
  type: '',
  payload: ''
}

實例

我們給定一個輸入框,表示要買多少蛋糕:

import React, { useState } from 'react'
import { buyCake } from '../redux'
import { connect } from 'react-redux'

function NewCakeContainer(props) {
    const [number, setNumber] = useState(1)
    return (
        <div>
            <h2>Number of Cakes {props.numOfCakes}</h2>
            <input type="text" value={number} onChange={e => setNumber(e.target.value)}></input>
            <button onClick={() => props.buyCake(number)}>Buy {number} Cake </button>
        </div>
    )
}

const mapStatetoProps = state => {
    return {
        numOfCakes: state.cake.numOfCakes
    }
}
const mapDispatchToProps = dispatch => {
    return {
        buyCake: (number) => dispatch(buyCake(number))
    }
}
export default connect(
    mapStatetoProps,
    mapDispatchToProps)
    (NewCakeContainer)

這里先注意一個小點,就是onClick接收一個箭頭函數(shù),如果一個函數(shù)本身是箭頭函數(shù),則直接放名字即可。如果是調(diào)用一個箭頭函數(shù),則可以再封裝一個箭頭函數(shù),把調(diào)用寫在函數(shù)體里即可。

然后我們再修改Action Creator:

import { BUY_CAKE } from './cakeTypes'

export const buyCake = (number=1) => {
    return {
        type: BUY_CAKE,
        payload: number
    }
}

從組件狀態(tài)中獲取數(shù)據(jù),然后在調(diào)用Action Creator時傳入即可。

這種從組件中獲取數(shù)據(jù),然后傳遞到reducer中使用的情景是非常多見的。

END.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容