On this first part, I'm going to show you how to use react hooks
in a sample react application, that application you'll be able to add books to your list, think the possibilities, we'll use useState()
, useEffect()
and useCallback()
.
First Step: Create Project
- You will need to install
create-react-app
to your machine, use this command to installnpm install -g create-react-app
; - So now you can generate the project typing
npx create-react-app books
; - Your project folder will contain this paths and files:
- Delete this file
App.js
and create a new file with the same name; - On your new file create something like that:
import React from 'react'; export default function App() { return <h1>Hello World!</h1> };
Second Step: Using useState()
In react version before 16.8
to create a Component that has a state, you should to create a Class Component like that:
import React from 'react'; class App extends React.Component { state = { title: 'Hello World!', } render() { return <h1>{this.state.title}</h1> } }; export default App;
- Okay now we're going to put this in our context:
import React from 'react'; class App extends React.Component { state = { books: ['Javascript', 'React'], newBook: '', } handleBookInput = e => this.setState({ newBook: e.target.value }); addBook = () => { this.setState({ books: [...this.state.books, this.state.newBook], newBook: '', }); } render() { // if you don't know what is <></> is short way to use <React.Fragment> :D return ( <> <input value={this.state.newBook} onChange={this.handleBookInput} placeholder="add here you new book" onKeyPress={e => e.key === 'Enter' && this.addBook()} /> <button onClick={this.addBook}>Add Book!</button> <ul> {this.state.books.map( (book, index) => <li key={index}>{book}</li> )} </ul> </> ) } }; export default App;
- let's re-build this file to a functional component and let's use
useState
:
// We need to import useState from react import React, { useState } from 'react'; export default function App() { /* When we declare a state variable with useState, it returns a pair — an array with two items. The first item is the current value, and the second is a function that lets us update it. Using[0] and[1] to access them is a bit confusing because they have a specific meaning. This is why we use array destructuring instead. */ /* const booksStateVariable = useState(['Javascript', 'React']); const books = booksStateVariable[0]; const setBooks = booksStateVariable[1]; */ /* To be more pretty and readable we use the way bellow, now you don't need to use this.state.books, just use books as a state variable :D; */ const [books, setBooks] = useState(['Javascript', 'React']); /*We'll create an addBook function to save this new book in books array, what this setBooks do? Answer: It do something like that to you => [...books, the_new_value], in this first part of article, we'll put the 'Test' value locally, in next part i'll show the next steps. */ const addBook = () => setBooks('Test'); return ( <> <button onClick={addBook}>Add test book!</button> <ul> {books.map((book, index) => <li key={index}>{book}</li>)} </ul> </> ); };
Top comments (0)