【发布时间】:2019-03-10 02:07:14
【问题描述】:
我正在使用 react 学习 redux。我正在尝试根据单击按钮更新一组数字。我特别想根据导入的 json 文件更新特定索引处的计数器。
import React, { Component } from 'react'
import { connect } from 'react-redux'
import { upVote, downVote } from '../store/actions/voteAction';
class Voter extends Component {
render() {
const { count, upVote, downVote, id} = this.props
return (
<div>
<button onClick={() => upVote(id)}>+</button>
The count is {count[id]}
<button onClick={() => downVote(id)}>-</button>
</div>
)
}
}
const mapDispatchToProps = dispatch => ({
upVote: (payload) => dispatch(upVote(payload)),
downVote: (payload) => dispatch(downVote(payload))
});
const mapStateToProps = (state) => ({
count: state.vote.count
})
export default connect(mapStateToProps, mapDispatchToProps)(Voter);
我认为我的问题在于我如何在减速器中传递和更新有效负载。
import {UP_VOTE,DOWN_VOTE} from '../actions/actionTypes'
import Mice from './../../imports/mice'
const initialState = {
count: new Array(Mice.length).fill(0)
}
const voteReducer = (state=initialState, action) => {
const id = action.payload
switch(action.type){
case UP_VOTE:
return{
...state, count: state.count[id] + 1
}
case DOWN_VOTE:
return{
...state, count: state.count[id] - 1
}
default:
return state
}
}
export default voteReducer;
我更新了数组,但每个索引仍在变化,而且似乎我仍在变异 count 数组而不是其中的索引。
我已将所有代码上传到 CodeSandbox 以供查看和试验: CodeSandbox Link
感谢阅读
【问题讨论】:
-
我正在运行您的代码,因为我可以看到您没有将正确的 id 传递给选民组件的 upvote 函数。每次它为 id 记录 0 或 1 时
-
我在选民组件中的
console.log(id)低于const { count, upVote, downVote, id} = this.props并且我在我的控制台中获得了所有100多个索引。你可以说得更详细点吗?你是如何得到 1 或 0 的?谢谢 -
啊,你得到了答案:)
标签: javascript reactjs redux react-redux