React.js setState
- Bài trước ta đã biết cách viết một State là như thế nào, bài này sẽ giúp các bạn cách cập nhật dữ liệu của component bằng các sử dụng setState.
Thay đổi dữ liệu bên trong component với State
- Muốn thay đổi hay cập nhật nội dung của một State, chúng ta sử dụng
this.setState
, khi này dữ liệu thay đổi sẽ được cập nhật tới State hiện tại. - Để hiểu rõ hơn về
this.setState
, chúng ta xem ví dụ sau:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hello React</title> <script src="https://unpkg.com/react@16/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script> <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script> </head> <body> <div id="member"></div> <script type="text/babel"> class Member extends React.Component { constructor(props) { super(props); this.state = { name: "Bùi Văn Tèo", age: 25 }; }; changeName = () => { this.setState({ name: "Bùi Văn Tý", age: 27 }) }; render() { return ( <div> <h2>{this.state.name}</h2> <p>Tuổi: {this.state.age}</p> <button type="button" onClick={this.changeName}>Change name</button> </div> ); }; }; ReactDOM.render( <Member />, document.getElementById('member') ); </script> </body> </html>
- Nội dung trên ta đã dùng
this.setState
để thay đổiname
của State. - Khi click vào
button
sẽ gọi functionchangeName
, khi nàythis.setState
sẽ cập nhật lại dữ liệu mới cho State.
Hiển thị trình duyệt sau khi đã click vào button
Xem thêm ví dụ về setState
- Ta sẽ thử sử dụng setState với dữ liệu Object nhiều phần tử để biết thêm nhiều trường hợp khác nhau:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hello React</title> <script src="https://unpkg.com/react@16/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script> <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script> </head> <body> <div id="member"></div> <script type="text/babel"> class Member extends React.Component { constructor(props) { super(props); this.state = { users: [ { name: "Bùi Văn Tèo", age: 25 }, { name: "Trần Văn An", age: 29 }, { name: "Nguyễn Thị Bưởi", age: 22 } ], job: "IT Communicator" }; }; changeName = () => { this.setState({ users: [ { name: "Bùi Văn Tý", age: 27 }, { name: "Trần Văn An", age: 29 }, { name: "Nguyễn Thị Bưởi", age: 22 } ], job: "Bridge System Engineer" }) }; render() { return ( <div> <h2>{this.state.users[0].name}</h2> <p>Tuổi: {this.state.users[0].age}</p> <p>Nghề nghiệp: {this.state.job}</p> <button type="button" onClick={this.changeName}>Change Data</button> </div> ); }; }; ReactDOM.render( <Member />, document.getElementById('member') ); </script> </body> </html>