【发布时间】:2021-01-16 14:37:25
【问题描述】:
我正在尝试使用 Redux 来更新我的卡片组件以在点击时禁用和更改颜色。 Redux 可以很好地调度操作,但它会更新所有卡片,而不仅仅是被点击的卡片。每张卡片都有一个与之关联的对象,其中包含单词和值。该值是我想在单击时更改颜色的className
组件
const Card = ({ wordObj, updateClass, isDisabled, cardClass }) => {
const showColor = (e) => {
updateClass(wordObj);
console.log(cardClass)
};
return (
<button
onClick={(e) => showColor()}
disabled={isDisabled}
className={cardClass}>
{wordObj.word}
</button>
);
};
const mapStateToProps = (state) => ({
cardClass: state.game.cardClass,
});
export default connect(mapStateToProps, { updateClass })(Card);
动作
export const updateClass = (obj) => (dispatch) => {
console.log(obj)
dispatch({
type: UPDATE_CARD,
payload: obj,
});
};
减速器
const initialState = {
words: [],
cardClass: 'card',
isDisabled: false,
};
export default function (state = initialState, action) {
const { type, payload } = action;
switch (type) {
case SET_WORDS: {
return {
...state,
words: payload,
};
}
case UPDATE_CARD:
return {
...state,
isDisabled: true,
cardClass: ['card', payload.value].join(' '),
};
default:
return state;
}
}```
【问题讨论】:
标签: javascript reactjs redux