【发布时间】:2018-03-08 04:46:18
【问题描述】:
这是一个超级菜鸟问题,我正在学习 redux 及其功能。但是,我在尝试从列表中删除项目时被卡住了。此列表通过我导入的 JSON 对象添加到其中的项目,然后将其推送到我稍后循环遍历的数组中。
在一个组件中,我通过单击按钮添加价格(模拟数据),并且我有一个总(价格总和)工作。此操作还会将该名称添加到侧列表中。
我一直在寻找,但没有找到好的解决方案。我希望这里有人可以帮助我理解和/或为我指明正确的方向。
到目前为止,当我单击按钮时,它会在列表中添加一个空按钮,而不是删除。如果我错了,请纠正我,但这是 slice 函数的预期行为,返回一个数组?
这是我的初始状态:
const initialState = [{
name: '',
total: '',
}]
我的动作类型:
case ActionTypes.REMOVE_EXAMS:
return[
...state[0].name.slice(0, action.index),
...state[0].name.slice(action.index + 1)
]
case ActionTypes.ADD_PRICES:
return [
{
total: Number(state[0].total + action.price),
name: action.name
}
]
这是一个呈现包含所有已添加项目的侧列表的组件。我的想法是按下按钮并从此侧列表中永久删除该项目
static propTypes = {
dataCarryName: PropTypes.string.isRequired,
removeExams: PropTypes.func.isRequired,
total: PropTypes.string.isRequired,
};
constructor(props) {
super(props);
this.names = [];
}
render() {
{this.names.push(this.props.dataCarryName)}
{console.log(this.names)}
return (
<MuiThemeProvider>
<div className="side-exam-view">
<Paper zDepth={2}>
<h1> Carrito </h1>
{this.props.total}
{this.names.map((i, k) => {
return(
<ul key={k}
className="exam-list-names">
<li key={k}>
<button onClick={() => this.props.removeExams(( i.length, {i}))}> {i} - X</button>
</li>
<Divider />
</ul>
)
})}
</Paper>
</div>
</MuiThemeProvider>
);
}}
更新: 这些是我的动作创建者:
export const addPrices = (price, name) => {
return{
type: ActionTypes.ADD_PRICES,
price,
name
}}
export const removeExams = (index, name) => {
return {
type: ActionTypes.REMOVE_EXAMS,
index,
name
}}
【问题讨论】:
-
您尚未展示您的
removeExams动作创建者的外观,这可能会有所帮助。 -
@Samo 刚刚添加了它们,对此感到抱歉。希望这能提供更多见解
标签: javascript reactjs redux react-redux