我正在尝试使用redux从数组中添加/删除项目,这些项目将添加到数组中,但是当我尝试删除项目时,它看起来像是在对数组进行突变并添加项目而不是删除
我的状态在尝试添加/删除项目后看起来与此类似
[item1, item2, [item1, item2]]
如何从阵列中删除项目?
状态
state.filtered.cities: []
Filter.js
import React from 'react'
import styled from 'styled-components'
import { connect } from 'react-redux'
import * as actions from './actions'
class Filter extends React.Component {
handlecity = (city) => {
this.props.addCity(city)
}
handleRemoveCity = (city) => {
this.props.removeCity(city)
}
render() {
const options = [
'item1','item2'
]
return(
<Wrap>
{options.map((option,index) =>
<Cell>
<OptionWrap key={index} onClick={()=> this.handlecity(option)}>
{option}
</OptionWrap>
<OptionWrap key={index} onClick={()=> this.handleRemoveCity(option)}>
remove {option}
</OptionWrap>
{console.log(this.props.city && this.props.city)}
</Cell>
)}
</Wrap>
)
}
}
const mapStateToProps = state => ({
city: state.filtered.cities
})
const mapDispatchToProps = {
...actions,
}
export default connect(mapStateToProps, mapDispatchToProps)(Filter);
actions.js
import {
ADD_CITY, REMOVE_CITY
} from '../../Constants'
export function addCity(city) {
return {
type: 'ADD_CITY',
city
}
}
export function removeCity(city) {
return {
type: 'REMOVE_CITY',
city
}
}
reducer.js
import {
ADD_CITY, REMOVE_CITY
} from '../Constants';
const cityReducer = (state = [], action) => {
switch (action.type) {
case ADD_CITY:
return [
...state,
action.city
]
case REMOVE_CITY:
return [
...state,
state.filter(city => city !== action.city),
]
default:
return state;
}
}
export default cityReducer;
答案 0 :(得分:0)
您要拆除的城市减速器应该看起来像
offsetDistance
否则,您将添加所有先前的项目以及已过滤的列表。