자바스크립트 react관련질문좀합니다
버튼을 클릭하면 사각형을 특정 공간만큼 움직이려고 하거든요.
import React, { Component } from 'react';
import './App.css';
class App extends Component {
constructor(props) {
super(props);
this.state = {
marginElem: document.getElementById("sq")
}
this.onclick = this.onclick.bind(this);
}
onclick(e) {
this.setState({ marginElem: this.state.marginElem.style.marginLeft + "1.5rem"});
}
render() {
return (
<div style={{marginTop:"3rem", marginLeft: "3rem"}}>
<div id="sq" className="square"></div>
<div>
<input onClick={this.onclick} className="button" type="button" value="click" />
</div>
</div>
);
}
}
export default App;
버튼을 클릭하면 null 이 발생하여 에러가 뜨거든요. 상태를 업데이트 시켜주면 되는거 같은데 어느 부분이 잘못된 건가요?
onclick 함수를
onClick = () => { this.setState({ sqMargin: this.state.sqMargin + 1 }) }div#sq를
<div style={{ marginLeft: `${this.state.sqMargin}rem` }}></div>6번째 줄에 this.state에서 state로 바꿔주시면 될 것 같아요!
https://stackblitz.com/edit/react-ge8q9g
실행 테스트해봤습니다. 참조 부탁드립니다!
- this.state = { marginElem: document.getElementById("sq") }
render후에 #sq가 만들어지기 때문에 marginElem이 null이 되는 상황입니다.
React Refs 문서를 보시고 생각을 다시 하시면 좋겠습니다.