gpt4 book ai didi

javascript - ReactJs 重复使用相同的组件但具有不同的样式

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:24:36 25 4
gpt4 key购买 nike

我有一个按钮组件,我希望在 reactJs 中重复使用,我希望呈现多个相同的组件但使用不同的样式,并在按下按钮和鼠标悬停时使用不同的样式

按钮组件是:-

import React, { Component } from 'react';
//import './Buttons.css'
const buttons = (props) => {



return (
<div className="">

<button id="buttons" class="-"> {props.name}</button>

</div>

);
}


export default buttons;

主要的 App 组件保持一个状态,然后该状态显示 Button 的名称,我相信有更好的方法可以做到这一点。

我还制作了多个按钮组件,我可以那样应用 css 样式,但我确信这不是正确的方法。

class App extends Component {



state = {
name: [
{ button: 'Login' },
{ buttonTwo: 'Sign Up' },
{ buttons: 'Login' }
],

}
render() {

const style = {
backgroundColor: 'blue',
font: 'inherit',
border: '1px solid red',
padding: '8px',

};



var pressed = true
function toggle() {
pressed = !pressed

//When pressed Styles change
}

return (
<div className="App">

{/* <Right /> Temp Disabled*/}
<span><Button pressed={pressed} defaultPressed={true} pressedStyle={{color: 'blue'}}
name={this.state.name[0].button} /></span>
<span><Button name={this.state.name[1].buttonTwo} /></span>

</div>
);
}
}

export default App;

我最终的目标是创建一个登录部分,以便这些按钮成为其中的一部分。

最佳答案

为什么不只使用 CSS 并使用原生 :active:hover 伪类来处理“鼠标悬停”和“按下按钮”?如果您的样式将在 CSS 中,那么您只需传递一些字符串作为参数(例如 className)并在 .css 文件中简单地定义必要的样式

例如

class Application extends React.Component {
render() {
return (
<div className="application-wrapper">
<Button className="red">This is the red button</Button>
<Button className="blue">This is the blue button</Button>
</div>
)
}
}

class Button extends React.Component {
render() {
return (
<button className={`my-awesome-button ${this.props.className}`}>{this.props.children}</button>
)
}
}

ReactDOM.render(<Application />, document.getElementById("kappa"))
.my-awesome-button {
line-height: 40px;
padding: 0 20px;
border: none;
background: black;
color: white;
font-weight: bold;
cursor: pointer;
outline: none;
}

.my-awesome-button:hover {
opacity: .54
}

.my-awesome-button:active {
opacity: .38
}

.my-awesome-button.red {
background: red
}

.my-awesome-button.blue {
background: blue
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="kappa"></div>

关于javascript - ReactJs 重复使用相同的组件但具有不同的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50258265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com