Simple project
Buka project react_learning yg kita buat di materi components
lalu buat folder baru di dalam components dengan nama Common, dan buat file baru di dalem folder Common dengan nama Like.jsx
Like.jsx
import React from "react";
// Input: liked: boolean
// Output: Onclick
const Like = props => {
let classes = "fa fa-heart";
if(!props.liked) classes += "-o";
return (
<i onClick={props.onClick} style={{ cursor: "pointer" }} className={classes} aria-hidden="true"></i>
);
}
export default Like
movies.jsx
import React, {Component} from 'react';
import Like from './Common/Like';
import { getMovies } from '../services/fakeMovieService';
class Movies extends Component {
state = {
movies: getMovies()
};
handleDelete = movie => {
const movies = this.state.movies.filter(m => m._id !== movie._id);
this.setState({ movies })
// console.log(movie)
}
handleLike = (movie) => {
const movies = [...this.state.movies];
const index = movies.indexOf(movie);
movies[index] = { ...movies[index] };
movies[index].liked = !movies[index].liked;
this.setState({ movies });
// console dan ambil tiap data per id
// console.log("like bos", movie)
}
render() {
const { lenght: count } = this.state.movies;
if( count === 0)
return <p>There are no movies in the database</p>;
return (
<>
<p>Showing {count} movies in the database</p>
<table className="table">
<thead>
<tr>
<th scope="col">Title</th>
<th scope="col">Genre</th>
<th scope="col">Stock</th>
<th scope="col">Rate</th>
<th scope="col"></th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
{ this.state.movies.map(movie => (
<tr key={movie._id}>
<td>{movie.title}</td>
<td>{movie.genre.name}</td>
<td>{movie.numberInStock}</td>
<td>{movie.dailyRentalRate}</td>
<td>
<Like liked={movie.liked} onClick={() => this.handleLike(movie)} />
</td>
<td><button onClick={() => this.handleDelete(movie)} className="btn btn-danger btn-sm">Delete</button></td>
</tr>
)) }
</tbody>
</table>
</>
)
}
}
export default Movies
Last updated
Was this helpful?