Да, вы можете просто отфильтровать state.propertyType
, чтобы удалить любые дубликаты.
// Sets the selected value...
case 'SET_PROPERTY_TYPE':
return {
...state,
propertyType: [
...state.propertyType.filter((value) =>
Object.keys(value)[0] !== Object.keys(action.payload)[0]),
action.payload
]
};
Вы также можете изменить state.propertyType
на объект, чтобы сделать вещи лучше:
function handleCheckboxChange(e) {
checkboxContext.dispatch({
type: 'SET_PROPERTY_TYPE',
payload: { [e.target.name]: e.target.checked }
});
}
const FilterCheckbox = ({ name, value, handleChange, checkedItems }) => (
<Label>
<FilterInput
type="checkbox"
name={name}
value={value}
onChange={handleChange}
checked={checkedItems[name]}
/>
{name}
</Label>
);
export default FilterCheckbox;
// Sets the selected value...
case 'SET_PROPERTY_TYPE':
return {
...state,
propertyType: {
...state.propertyType,
...action.payload
}
};
Вам также необходимо изменить способ отображения FilterCheckbox
из состояния.