게시물을 테이블에 추가하는 앱을 만들고 있습니다. 아래 코드는 작동하지 않습니다. 당신은 당신이 바벨을 사용하는 경우React를 사용하여 게시물을 추가하는 방법은 무엇입니까?
생성자에
this.handleAddNew = this.handleAddNew.bind(this);
를 추가 할 필요가 handleAddNew
this
에 결합하지 않고
Uncaught TypeError: Cannot read property 'props' of null(…) for function handleAddNew()
import React from 'react';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
number:'1',
name:'gogo',
title:'',
views:'10',
likes:'22',
date:'1.1.1111'
};
}
addPost(title){
this.state.title.push(title);
this.setState({
post: this.state.title
});
}
render() {
return (
<div>
<AddPost addNew={this.addPost} />
<table>
<thead>
<Thead/>
</thead>
<tbody>
<Row number={this.state.number}
name={this.state.name}
title={this.state.title}
views={this.state.views}
likes={this.state.likes}
date={this.state.date}/>
</tbody>
</table>
</div>
);
}
}
class AddPost extends React.Component{
constructor(props) {
super(props);
this.state = {
newPost: ''
}
this.updateNewPost = this.updateNewPost.bind(this);
}
updateNewPost(e){
this.setState({newPost: e.target.value});
}
handleAddNew(){
this.props.addNew(this.state.newPost);
this.setState({newPost: ''});
}
render(){
return (
<div>
<input type="text" value={this.state.newPost} onChange={this.updateNewPost} />
<button onClick={this.handleAddNew}> Add Post </button>
</div>
);
}
}
class Thead extends React.Component {
render() {
return (
<tr>
<td id='number'>ID</td>
<td id='name'>User name</td>
<td id='title'>Post title</td>
<td id='views'>Views</td>
<td id='likes'>Likes</td>
<td id='date'>Created at</td>
</tr>
);
}
}
class Row extends React.Component {
render() {
return (
<tr>
<td>{this.props.number}</td>
<td>{this.props.name}</td>
<td>{this.props.title}</td>
<td>{this.props.views}</td>
<td>{this.props.likes}</td>
<td>{this.props.date}</td>
</tr>
);
}
}
export default App;
바인드를 추가 할 때 감사합니다. 하지만 다음 문제가 있습니다. Uncaught TypeError : 정의되지 않은 (...) 속성 'title'을 읽을 수 없습니다. this.state.title.push (title);을 읽지 않습니다. 나는이 값을 this.state.title –
에 두 가지 이유로 밀어 넣을 것이라고 생각했다. 1. push() 메서드는 배열 끝에 요소를 추가합니다. 'this.state.title'은 문자열입니다. 2. 상태를 변경하려면'this.setState ({title : this.state.title}); 또는 같은 이름을 가지고 있으므로 짧게 할 수 있습니다. setState ({title});'. 두 가지를 결합 할 수 있습니다 :'this.setState ({title, post : this.state.title}); ' – Robiseb
OK. 내가 가지고있어 : this.addPost = this.addPost.bind (this); } addPost (제목) { this.setState ({title}); } 감사합니다. :) –