Я работаю над приложением React и использую Redux для хранения состояния. У меня есть следующий код.
menu.component.jsx:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import MenuCategory from '../../components/menu-category/menu-category.component'
import NewCategoryButton from '../../components/new-category-button/new-category-button.component';
import EditMenuButton from '../../components/edit-menu-button/edit-menu-button.component';
import './menu.styles.scss';
class MenuPage extends Component {
state = {
menuEditable: false
}
render() {
return (
<div className='menu-page'>
{this.props.menu ? this.props.menu.map(category => <MenuCategory key={category._id} {...category} />) : null}
<div className='edit-menu-buttons'>
<div className='menu-button'>
{this.props.currentUser ? <NewCategoryButton /> : null}
</div>
<div className='menu-button'>
{this.props.currentUser ? <EditMenuButton /> : null}
</div>
</div>
</div>
)
}
}
const mapStateToProps = state => ({
currentUser: state.user.currentUser,
menu: state.menu
})
export default connect(mapStateToProps)(MenuPage);
edit-menu-button.component.jsx:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import Button from '../button/button.component';
class EditMenuButton extends Component {
state = {
text: "Edit Menu"
}
changeText = () => {
const { text } = this.state;
if(text === "Edit Menu") {
this.setState({text: "Save Edits"});
} else {
this.setState({text: "Edit Menu"});
}
}
render() {
const { text } = this.state;
return (
<Button onClick={ () => { this.changeText()} } style={{ backgroundColor: text === "Save Edits" ? "#b9edee" : "#222222", color: text === "Save Edits" ? "#000000" : "#ffffff", border: text === "Save Edits" ? "none" : "1px solid #222222"}}>{text}</Button>
);
}
}
export default (EditMenuButton);
У меня есть EditMenuButton компонент, который имеет состояние со свойством text
, и компонент MenuPage, который имеет состояние со свойством menuEditable
.
Когда свойство text
в компоненте EditMenuButton имеет значение 'Save Edits'
, Я хочу, чтобы свойство menuEditable
в компоненте MenuPage имело значение true
.
У меня есть данные, внешние по отношению к компонентам в моем приложении, которые составляют хранилище Redux (например, с использованием createStore()
функция). Однако я не уверен, как изменить значение свойства состояния, когда состояние находится внутри компонента, как в случае компонентов MenuPage и EditMenuButton. Любые идеи приветствуются.