Я новичок в реакции, поэтому я пытаюсь сделать это с помощью приложения задач, но по какой-то причине, когда я пытаюсь "проверить" задачу, я выдал ошибку с const newTasks , я пытался дать начальные значения, и показать его на консоли, но просто кажется, что значения, могут быть сформированы метод фильтра ????
задач. json // пример данных
[
{
"id": 0,
"title": "espada",
"description": "esta es un arma japonesa que bla bla bla bla bla bla bla bla",
"done" : false
},
{
"id": 1,
"title": "pistola",
"description": "pistola semi-automatica que sirve para pegar tiros bla bla bla",
"done" : false
},
{
"id": 2,
"title": "ballesta",
"description": "loren ipsum dolor no se que carajos seguia despues bla bla bla",
"done" : true
},
{
"id": 3,
"title": "sable pistola",
"description": "sacado de la franquisia de juegos mas alabado, a un nerd se le",
"done" : false
}
]
индекс . js
import React, { Component }from 'react'
import ReactDOM from 'react-dom'
import './index.css';
// Components
import TaskForm from './components/TaskForm';
import tasks from './samples/tasks.json'
import Tasks from './components/tasks'
class App extends Component{
state = {
tasks : tasks
}
addTask = (title, description) => {
const newTask = {
id: this.state.tasks.length,
title: title,
description: description,
done: false
};
this.setState(state => ({
tasks : [...state.tasks, newTask]
}));
console.log(this.state)
}
deleteTask = id => {
const newtasks = this.state.tasks.filter(task => task.id !== id);
this.setState(state => ({
tasks: newtasks
}));
}
checkDone = id => {
const newTasks = this.state.tasks.filter(task => {
if (task.id === id) {
console.log("funciona" + task.id)
// task.done = !this.state.task.done
// return tasks;
// } else {
// return task
}
console.log(task.id);
});
console.log(newTasks[0].id)
// this.setState({tasks: newTasks});
}
render() {
return (
<div>
<TaskForm addTask={this.addTask}/>
<Tasks
tasks={this.state.tasks}
deleteTask={this.deleteTask}
checkDone={this.checkDone}
/>
</div>
)
}
заданий. js
import React, { Component } from 'react';
import Task from './Task';
import propTypes from 'prop-types';
export default class Tasks extends Component {
render() {
return (
this.props.tasks.map(task =>
<Task
task={task}
key={task.id}
deleteTask={this.props.deleteTask}
checkDone={this.props.checkDone}
/>)
);
}
}
Tasks.propTypes = {
tasks: propTypes.array.isRequired
}
заданий. js
import React,{ Component } from "react";
import propTypes from 'prop-types';
export default class Task extends Component{
state = {
done: this.props.task.done
}
styleCompleted() {
return {
fontSize: '20px',
color: this.props.task.done ? 'grey' : 'black',
textDecoration: this.props.task.done ? 'line-through' : 'none'
}
}
render() {
const {task} = this.props; // con esta linea extraemos el arreglo que nos stan devolviendo y lo guardamos en otro llamado task
return (
<div style={this.styleCompleted()}>
{task.title} -
{task.id} -
{task.description}
<input
type="checkbox"
onChange={this.props.checkDone(task.id)}
/>
<button
style={btnDelete}
onClick={this.props.deleteTask.bind(this, task.id)}
>
x
</button>
</div>
);
}
}
Task.propTypes = {
task: propTypes.object.isRequired
}
const btnDelete = {
fontSize: '18px',
background: 'red',
color: '#fff',
border: 'none',
padding: '10px 15px',
borderRadius: '50%',
cursor: 'pointer'
}
спасибо за вашу помощь