Javascript ReactJS:当按钮内的文本为某个值时,如何使按钮背景颜色发生变化

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 : '

我正在开发一个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>
)
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(“根”))


您应该看看样式化组件。您可以通过传递道具来修改样式化组件的样式,无需更改类名。您应该看看样式化组件。您只需通过传递道具就可以修改样式化组件的样式,无需更改类名