01/10/2018, 16:13

Text input không nhập được trong React

Hi everyone! Mình đang học react nhưng có thắc mắc như sau:

Mình đang làm chức năng tìm kiếm username trên github rồi add card vào(kiểu add danh bạ github vào). nhưng khi chạy thì cái text input của mình không nhập được.

Đây là Code:

class Card extends React.Component {
	constructor(props) {
  	super(props);
  }
  
  render() {
  	return(
    	<div>
    	  <img width="75" src={this.props.avatar_url} />
        <div style={{display: "inline-block", marginLeft: 10}}>
          <div class="name">Name: {this.props.name}</div>
          <div class="company">Company: {this.props.company}</div>
        </div>
    	</div>
    );
  }
}

const Cardlist = (props) => {
	return(
  	<div>
  	  {props.cards.map(card => <Card {...card}/>)}
  	</div>
  );
}

class Form extends React.Component {
	state = { userName: "" };
	handleSubmit = (event) => {
  	event.preventDefault();
    console.log("Event: Form submit", this.state.userName);
    axios.get("https://api.github.com/users/${this.state.userName}")
    .then(resp =>
    {
    	this.props.onSubmit(resp.data);
    });
  }
  
	render() {
  	return(
    	<form onSubmit={this.handleSubmit}>
    	  <input 
        	type="text" 
          onChange={(event) => this.setState({username: event.target.value})} 						         		 placeholder="Github username" 
          value={this.state.userName} 
        	required />
        <button type="submit">Add card</button>
    	</form>
    );
  }
}

class App extends React.Component {
	state = {
  	cards: [
      { 
        name: "Aragami1408",
        avatar_url: "https://avatars3.githubusercontent.com/u/25903678?v=4",
        company: "Day Nhau Hoc"
      },
      { 
        name: "Drgnz",
        avatar_url: "https://avatars0.githubusercontent.com/u/12205347?v=4",
        company: "Day Nhau Hoc"
      },
      {
        name: "Huy Nguyen",
        avatar_url: "https://avatars3.githubusercontent.com/u/4599467?v=4",
        company: "Day Nhau Hoc"
      },
      {
        name: "Ho",
        avatar_url: "https://avatars0.githubusercontent.com/u/340262?v=4",
        company: "N/A"
      },
      {
        name: "Xuan-An Phan",
        avatar_url: "https://avatars3.githubusercontent.com/u/13184721?v=4",
        company: "Day Nhau Hoc"
      },
    ]
  }
  
  addNewCard = (cardInfo) => {
  	this.setState(prevState => ({
    	cards: prevState.cards.concat(cardInfo)
    }));
  }
  
	render() {
  	return(
    	<div>
    	  <Form onSubmit={this.addNewCard}/>
        <Cardlist cards={this.state.cards} />
    	</div>
    );
  }
}
ReactDOM.render(<App />, mountNode);

Còn đây là phần kết quả:

P/s: 5 cái card trên chỉ là demo thôi nha

Nguyen Ca viết 18:17 ngày 01/10/2018

sử lại kiểu này xem

handleChange(event) {
  this.setState({title: event.target.value})
}
render() {
  return <input type=”text” name=”title” value={this.state.title} 
    onChange={this.handleChange.bind(this)}/>
}
Aragami1408 viết 18:25 ngày 01/10/2018

Cảm ơn anh nhưng mà trong text input được gán state là username trong khi khai báo state em lại đặt là userName thì sai là phải rồi!

P/s: @drgnz close với cả unlist hộ mình nhé

Bài liên quan
0