javascript - ReactJS:当其中的文本为某个值时如何使按钮背景颜色发生变化
问题描述
我正在开发一个 React 应用程序,我正在使用 Redux 来存储状态。我有以下代码。
button.component.jsx:
import React from 'react';
import './button.styles.scss';
export default ({ children, secondary, className, ...props }) => (
<button className={`button ${className ? className : ''} ${secondary ? 'secondary' : ''}`} {...props}>{children}</button>
)
button.styles.scss:
.button {
background-color: #222222;
border-radius: 5px;
color: #ffffff;
min-width: 100px;
padding: 0 20px;
height: 40px;
font-size: 16px;
cursor: pointer;
border: 1px solid #222222;
transition: all 0.2s linear;
&:active, &:focus {
outline: none;
}
&:hover {
background-color: #ffffff;
color: #222222;
}
&.secondary {
background-color: #ffffff;
color: #222222;
border: 1px solid #222222;
&:hover {
color: #ffffff;
background-color: #222222;
}
}
}
编辑菜单按钮.component.jsx:
import React from 'react';
import { connect } from 'react-redux';
import Button from '../button/button.component';
class EditMenuButton extends React.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()} }>{text}</Button>
);
}
}
export default (EditMenuButton);
menu.component.jsx:
import React 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';
const MenuPage = props => {
return (
<div className='menu-page'>
{props.menu ? props.menu.map(category => <MenuCategory key={category._id} {...category} />) : null}
<div className='edit-menu-buttons'>
<div className='menu-button'>
{props.currentUser ? <NewCategoryButton /> : null}
</div>
<div className='menu-button'>
{props.currentUser ? <EditMenuButton /> : null}
</div>
</div>
</div>
)
}
const mapStateToProps = state => ({
currentUser: state.user.currentUser,
menu: state.menu
})
export default connect(mapStateToProps)(MenuPage);
对于我的EditMenuButton
组件,我有一个功能可以在单击按钮时更改按钮文本。当按钮中的文本为“保存编辑”时,我希望按钮的背景颜色#6ad0d4
为#222222
.
我知道我可以向我的按钮添加一个类,例如'save-edits-true'
,然后使用这个类应用样式。Button
但是,当组件按钮内的文本EditMenuButton
为“保存编辑”时,我不确定如何动态地将类添加到我的组件中。
任何见解都值得赞赏。
解决方案
做这个简单的改变 -
<Button onClick={ () => { this.changeText()} }
backgroundColor={this.state.text === "Save Edits" ? '#6ad0d4': ''#222222''}>{text}</Button>
并在按钮组件中使用该道具来动态更改背景颜色。
推荐阅读
- git - Git 中基于内容的寻址有什么好处?
- ios - iOS 通知图像。“_OBJC_CLASS_$_FIRMessagingExtensionHelper”错误
- mysql - Mysql:从不在第三个表中的2个表中选择行
- django - 如何在 django 中更改默认模板身份验证登录这不起作用?
- flutter - 如何使用表格日历创建包含日期和时间的事件列表
- java - rs.next() 总是返回 false
- c# - 从实体框架 ASP.NET MVC 生成的模型创建 ViewModel
- java - dao 服务和控制器层中的 Spring MVC Transactional
- java - 如何对自引用结构进行排序?
- azure-ad-b2c-custom-policy - Azure Ad b2c custompolicy starter pack 本地登录