Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用道具更改React组件的颜色_Javascript_Css_Reactjs_Frontend - Fatal编程技术网

Javascript 如何使用道具更改React组件的颜色

Javascript 如何使用道具更改React组件的颜色,javascript,css,reactjs,frontend,Javascript,Css,Reactjs,Frontend,在下面的代码中,我在React的帮助下创建了一个按钮组件。因为React允许您创建可重用组件,所以我希望能够创建一个包含不同文本和不同颜色的按钮。例如: import React from "react" import App from "../GlowButton/GlowButton" const App= () => { return ( <div classNam

在下面的代码中,我在React的帮助下创建了一个按钮组件。因为React允许您创建可重用组件,所以我希望能够创建一个包含不同文本和不同颜色的按钮。例如:

    import React from "react"
    import App from "../GlowButton/GlowButton"
    
    const App= () => {
        return (
            <div className="App"> 
                <GlowButton text="Darth vader" color="red"/>
                <GlowButton text="Yoda" color ="green"/>
                <GlowButton text="Obi Wan Kenobi" color="aqua"/>
            </div>
        )
    }

export default App
css文件的样式和细节实际上并不重要。关键在于它基于--buttonColor变量创建一个按钮

JS/JSX部分是:

import React from "react"

import "./GlowButton.scss"

// Properties are color and text 
const GlowButton = (props) => {
    return (
        <inline className="glowButton">
            <button className="myButton">{props.text}</button>
        </inline>
    )
}

export default GlowButton 
如果COLORCONST设置为单色,则代码工作正常,但如果设置为props.color,则无效,忽略该颜色并在css文件中显示默认橙色


如果有人能解释一下我用props.color做了什么错误,或者为什么我不能使用它,那就太好了。

你需要这样的东西:

const GlowButton = (props) => {
return (
    <inline className="glowButton">
        <button className="myButton" style={{color: props.color}}>{props.text}</button>
    </inline>
)}
const GlowButton=(道具)=>{
返回(
{props.text}
)}

您可以做的是动态附加一个基于颜色的类,如

import React from "react"

import "./GlowButton.scss"

// Properties are color and text 
const GlowButton = (props) => {
   return (
    <inline className="glowButton">
        <button className={`myButton ${props.color}`}>{props.text}</button>
    </inline>
   )
}

export default GlowButton 

内联样式是最合适的解决方案吗?在我看来,如果有更多的样式,那么使用内联将很快变得杂乱无章。我认为第二种方法是将颜色名称添加到类名中,并在css中为每个类编写另一种颜色。我不知道第三种方法如果有三种以上的颜色怎么办?如果我希望用户能够使用任何rgba(w、x、y、z)颜色,该怎么办。这超过一百万个条件。任何主题或react库都有一个特定范围的调色板。只要选择你想要的,如果你想要百万色的条件,你可能必须使用内联样式或一些npm库。
const GlowButton = (props) => {
return (
    <inline className="glowButton">
        <button className="myButton" style={{color: props.color}}>{props.text}</button>
    </inline>
)}
import React from "react"

import "./GlowButton.scss"

// Properties are color and text 
const GlowButton = (props) => {
   return (
    <inline className="glowButton">
        <button className={`myButton ${props.color}`}>{props.text}</button>
    </inline>
   )
}

export default GlowButton 
.myButton {

     //Common Styles Here

     &.red {
         //Distinct Styles Here
     }

     &.green {
         //Distinct Styles Here
     }

     &.aqua {
         //Distinct Styles Here
     }
}