【发布时间】:2020-08-04 02:41:38
【问题描述】:
由于我是 redux 的新手,这里有一个关于 redux 中数据流的关键问题
据我了解,我创建了一个组件作为 CountN:
import React from 'react'
import styles from '../../features/counter/Counter.module.css'
const CountN = (props) => {
const {countValue,actions} = props;
return (
<div>
<div className={styles.row}>
<button
className={styles.button}
aria-label="Increment value"
onClick={actions.increment}
>
+
</button>
<span className={styles.value}>{ countValue }</span>
<button
className={styles.button}
aria-label="Decrement value"
onClick={actions.decrement}
>
-
</button>
</div>
</div>
)
}
export default CountN
然后我使用容器将数据传递给 CountN
下面的容器:
import React from 'react';
import CountN from "../../components/countN"
import { connect } from 'react-redux'
import * as CountActions from '../../actions'
import { bindActionCreators } from 'redux';
const mapStateToProps = (state) =>({
countValue: state.value
})
const mapDispatchToProps = (dispatch) =>({
actions: bindActionCreators(CountActions,dispatch)
})
export default connect(
mapStateToProps,
mapDispatchToProps
)(CountN)
为了管理状态,我创建了 Reducer 来设置状态:
下面的减速器:
import * as types from '../constants/CountTypes';
const initialState = [{
value: 0,
payload: 0,
}]
const counter = (state=initialState,action)=> {
switch (action.type){
case types.Increment:
return [{
value: state.value + 1,
payload: 0,
}]
case types.Decrement:
return [
...state,
{
value: state.value - 1
}
]
case types.IncrementByAmount:
return [{
value: state.value + action.payload ,
payload: action.payload
}
]
default:
return state
}
};
export default counter;
另外,我用“CreateStore(reducer)”创建了一个商店来存储数据,
现在问题是我得到一个错误:
TypeError: 无法读取未定义的属性“增量”
据我所知,状态未定义,
能否请高手帮我弄清楚哪一部分是错的,为什么数据没有通过“props”传递给容器???
非常感谢
【问题讨论】:
标签: redux react-redux dataflow