У меня есть Menu
и MenuItem
реагирующие компоненты.
Они работают так.
<Menu openOnClick>
<MenuItem target="/" text="Item 1" active />
<MenuItem target="#" text="Item 2" parent>
<MenuItem target="/" text="Item 3" />
<MenuItem target="/" text="Item 4" />
</MenuItem>
</Menu>
<Menu>
<MenuItem target="/" text="Item 1" active />
<MenuItem target="#" text="Item 2" parent>
<MenuItem target="/" text="Item 3" />
<MenuItem target="/" text="Item 4" />
</MenuItem>
</Menu>
Обычно MenuItem
открывается при наведении курсора, но я хочу также предоставить режим щелчка для раскрывающегося списка.
ClickMode проиллюстрировать
Так что MenuItem
имеет clickMode
состояние. Я хочу это, если Menu
(родительский компонент) имеет openOnClick
prop true (предоставлено пользователем), тогда MenuItem
clickMode
состояние должно быть true.
Я достигаю этого в компоненте MenuItem с избыточным кодом.
const mapStateToProps = (state) => {
console.log(state.menuReducer.clickMode)
return {
clickMode:state.menuReducer.clickMode
}
}
Но если есть несколько Menu
компонентов, они не работают. Потому что redux
сохраняет изменения при каждом событии отправки.
Вот журналы избыточного состояния.
Вот Menu
редуктор.
export const menuReducer = (state = [], action) => {
switch (action.type) {
case menuConstants.CLICK_MODE:
return {
type: menuConstants.CLICK_MODE,
clickMode: action.clickMode
}
default:
return state;
}
}
Как справиться с этим?
Большое спасибо за помощь.