클릭 시 버튼 유형 변경
변경할 수 있습니까?background-color
내가 좋아하는onClick
기능하고 있습니까?
예: 클릭background-color: black
, 한 번 더 클릭합니다.background-color: white
저는 이런 걸 해봤는데this.style
, 결과 없음.
나는 간신히 오버레이 작업을 했고 그 안에 필요한 데이터를 삽입했다.하지만 날 도와줄 수 있는 게시물을 찾지 못했어.리액트 부트스트랩을 사용하고 있습니다.이건 내 암호야
const metaDataOverlay = (
<div>
<style type="text/css">{`
.btn-overlay {
background-color: white;
margin-right: -15px;
margin-left: -15px;
padding-bottom: -20px;
padding: 0;
}
`}</style>
<ButtonToolbar>
<ButtonGroup>
<OverlayTrigger trigger={['hover', 'focus']} placement="left" overlay={popoverHoverFocus}>
<Button bsStyle="overlay" onClick={ clicked } onKeyPress={ keypress }>
<div className={bemBlocks.item().mix(bemBlocks.container("item"))} data-qa="hit">
<a href={url} onClick={(e)=>{e.preventDefault(); console.log("123")}}>
<div>
<img data-qa="poster" className={bemBlocks.item("poster")} src={result._source.poster} width="240" height="240"/>
</div>
</a>
</div>
</Button>
</OverlayTrigger>
</ButtonGroup>
</ButtonToolbar>
</div>
)
상태를 사용하여 색상을 저장할 수 있습니다.아마도 이것은 당신에게 문제를 해결하는 방법을 줄 것이다.
class Test extends React.Component {
constructor(){
super();
this.state = {
black: true
}
}
changeColor(){
this.setState({black: !this.state.black})
}
render(){
let btn_class = this.state.black ? "blackButton" : "whiteButton";
return (
<button className={btn_class} onClick={this.changeColor.bind(this)}>
Button
</button>
)
}
}
React.render(<Test />, document.getElementById('container'));
또한 이벤트와 이벤트의 현재 대상에 액세스할 수 있습니다.
handleClick = (event) => {
// accessible
event.target.style
event.target.classList //to change style via css
}
여기 또 다른 해결책이 있습니다.
changeStyles = () => {
let element = document.getElementById('button')
ReactDOM.findDOMNode(element).style.backgroundColor = this.state.isClicked?'black' : 'white'
}
이 방법으로 CSS에서 중복을 방지하기 위해 필요한 스타일 속성만 변경할 수 있습니다.
이렇게 하면
handleClick=(e)=>{
console.log("this is working fine");
e.preventDefault();
e.target.style.color = 'black'
console.log(e.target);
}
보다 동적으로 상태를 초기화할 경우 style afterwords 기본값에서 setState 함수를 사용하여 상태를 업데이트할 수 있습니다.
툴팁에 추가
<Tooltip cursor={{ fill: 'transparent' }} />
다음은 다른 해결 방법입니다.
import React, { Component } from 'react';
import './App.css';
class App extends Component {
constructor(props) {
super(props);
this.state = {
BackgroundColor: "BLACK"};
};
render(){
return (
<div className='app'>
<button className={this.state.BackgroundColor === "BLACK" ? "Black" : "nothing"}
onClick={() => {this.setState({BackgroundColor: "WHITE"})}}>CHANGE TO BLACK</button>
<button className={this.state.BackgroundColor === "WHITE" ? "White" : "nothing"}
onClick={() => {this.setState({BackgroundColor: "BLACK"})}}>CHANGE TO WHITE</button>
</div>
);
}
}
export default App;
이 코드를 사용하면 이전 검은색 버튼을 숨기고 흰색 배경의 새 버튼으로 변경할 수 있습니다.이 기능은 새로운 흰색 버튼에서도 작동합니다.반복하지 않고 버튼의 배경색만 변경하고 싶다면 렌더에서 조건부 상태 변경을 시도할 수도 있습니다.
render(){
return (
<div className='app'>
<button className={this.state.BackgroundColor === "BLACK" ? "Black" : "White"}
onClick={() => {this.setState({BackgroundColor: "WHITE"})}}>CHANGE TO BLACK</button>
</div>
);
}
}
CSS는 다음과 같습니다.
*{
margin: 0;
padding: 0;
}
.app{
display: flex;
justify-content: center;
align-items: center;
}
.Black{
background-color: black;
color: white;
}
.White{
background-color: white;
color: black;
}
.nothing{
display: none;
}
언급URL : https://stackoverflow.com/questions/41978408/changing-style-of-a-button-on-click
'programing' 카테고리의 다른 글
Ajax, 뒤로 버튼 및 DOM 업데이트 (0) | 2023.04.05 |
---|---|
Chrome 확장 hint.js & ngHint Modules (0) | 2023.04.05 |
Google Places 자동 완성이 표시되지 않음 (0) | 2023.04.05 |
쿠폰 적용 시 세금 제외, 품목 세금 포함 (0) | 2023.04.05 |
AngularJs ngOptions 정렬 배열 (0) | 2023.04.05 |