Javascript ReactJS:当按钮内的文本为某个值时,如何使按钮背景颜色发生变化
我正在开发一个React应用程序,并使用Redux存储状态。我有以下代码 button.component.jsx:Javascript ReactJS:当按钮内的文本为某个值时,如何使按钮背景颜色发生变化,javascript,css,reactjs,redux,Javascript,Css,Reactjs,Redux,我正在开发一个React应用程序,并使用Redux存储状态。我有以下代码 button.component.jsx: import React from 'react'; import './button.styles.scss'; export default ({ children, secondary, className, ...props }) => ( <button className={`button ${className ? className : '
import React from 'react';
import './button.styles.scss';
export default ({ children, secondary, className, ...props }) => (
<button className={`button ${className ? className : ''} ${secondary ? 'secondary' : ''}`} {...props}>{children}</button>
)
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);
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);
edit-menu-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>
)
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);
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);
从“React”导入React;
从'react redux'导入{connect};
从“../Button/Button.component”导入按钮;
类EditMenuButton扩展了React.Component{
状态={
文本:“编辑菜单”
}
changeText=()=>{
const{text}=this.state;
如果(文本==“编辑菜单”){
this.setState({text:“保存编辑”});
}否则{
this.setState({text:“编辑菜单”});
}
}
render(){
const{text}=this.state;
返回(
{this.changeText()}}>{text}
);
}
}
导出默认值(编辑菜单按钮);
menu.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>
)
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);
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);
从“React”导入React;
从'react redux'导入{connect};
从“../../components/menu category/menu category.component”导入菜单类别
从“../../components/new category button/new category button.component”导入NewCategory按钮;
从“../../components/edit menu button/edit menu button.component”导入EditMenuButton;
导入“./menu.styles.scss”;
const MenuPage=props=>{
返回(
{props.menu?props.menu.map(category=>):null}
{props.currentUser?:null}
{props.currentUser?:null}
)
}
常量mapStateToProps=状态=>({
currentUser:state.user.currentUser,
菜单:state.menu
})
导出默认连接(MapStateTops)(菜单页);
对于我的EditMenuButton
组件,我有一个功能,可以在单击按钮时更改按钮文本。当按钮中的文本为“保存编辑”时,我希望按钮的背景颜色为#6ad0d4
,而不是#22222
我知道我可以在我的按钮中添加一个类,比如“save-edits-true”
,然后使用这个类应用样式。但是,当EditMenuButton
组件按钮中的文本为“保存编辑”时,我不确定如何将类动态添加到按钮
组件中
任何见解都将受到赞赏。做一个简单的改变-
{this.changeText()}
backgroundColor={this.state.text===“保存编辑”?“#6ad0d4':“#2222222”}>{text}
并使用按钮组件中的道具动态更改背景颜色。进行此简单更改-
{this.changeText()}
backgroundColor={this.state.text===“保存编辑”?“#6ad0d4':“#2222222”}>{text}
并使用按钮组件中的道具动态更改背景颜色。您可以使用内嵌样式 尝试文本演示:
const-App=()=>{
const[input,setInput]=React.useState(“保存编辑”);
常量inputhander=e=>{
设置输入(如目标值);
};
返回(
根据按钮的文本内容更改其背景色
{input}
);
}
render(,document.getElementById(“根”))代码>
您可以使用内联样式
尝试文本演示:
const-App=()=>{
const[input,setInput]=React.useState(“保存编辑”);
常量inputhander=e=>{
设置输入(如目标值);
};
返回(
根据按钮的文本内容更改其背景色
{input}
);
}
render(,document.getElementById(“根”))代码>
您应该看看样式化组件。您可以通过传递道具来修改样式化组件的样式,无需更改类名。您应该看看样式化组件。您只需通过传递道具就可以修改样式化组件的样式,无需更改类名