【发布时间】:2020-04-08 10:25:16
【问题描述】:
我是使用 reducer 存储数据的新手,并且偶然发现了一个问题。我目前有一个复选框列表,当单击这些复选框时,它会调度一个动作以将它们存储在我的减速器的数组中。但是,目前,我可以继续检查/取消检查,并且将继续将相同的值推送到数组中。
如何防止这种情况发生?我是否以某种方式在减速器内部或复选框上的 handleChange 事件中过滤掉?
我添加了我当前代码的一个小sn-p
谢谢!
function handleCheckboxChange(e) {
if (e.target.checked) {
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]
};
【问题讨论】:
标签: reactjs react-redux reducers react-context