Рубрики
Без рубрики

Как выполнить операции CRUD, используя реагирование

Zafar SaleM Как выполнить операции CRUD, используя Reactin My предыдущие статьи, мы уже написали одно и то же приложение TODO, используя ванильный JavaScript и Angular. Теперь пришло время взять этот же пример немного дальше и использовать еще более популярные рамки: реагировать. Этот пример предполагает, что

Автор оригинала: FreeCodeCamp Community Member.

Зафар Алема

В моих предыдущих статьях мы уже написали одно и то же приложение TODO, используя Ванильный JavaScript и Угловой Отказ Теперь пришло время взять этот же пример немного дальше и использовать еще более популярные рамки: реагировать. Этот пример предполагает, что вы уже установили Узел и Create-React-App в вашей системе.

Прежде всего, давайте создадим новое приложение RACT с помощью этой команды.

create-react-app todo

Дайте ему несколько секунд, а затем у вас должна быть папка TODO в вашей файловой системе. CD в эту папку.

Первое, что создано, это новый файл под названием Todo.js внутри SRC/ папка. Вот код в этом файле:

import React, { Component } from 'react';
class Todo extends Component {     render() {        return(

This message is from Todo component

) } }
export default Todo;

Во-первых, мы импортируем Реагировать и Компонент от реагирования основной.

Тогда мы создаем Компонент Todo который простирается от Компонент Отказ

Компонент Todo имеет оказывать Метод, который отображает JSX с H1 Элемент и текст «Это сообщение из компонента TODO».

Наконец, мы экспортируем этот компонент, чтобы использовать его в остальной части нашего проекта.

Теперь открыть SRC/App.js файл. Нам нужно импортировать наш недавно созданный компонент TODO после импорта App.csss файл.

После того, как сейчас используйте этот компонент внутри метода рендеринга компонента приложения.

import React, { Component } from 'react';import logo from './logo.svg';import './App.css';
// import Todo component hereimport Todo from './Todo';
class App extends Component {
constructor(props) {    super(props);
this.state = {      show: false    };  }
render() {    // use Todo component inside render method.    return (      
); }}
export default App;

Теперь, когда у нас есть базовый файл компонента TODO и импортировал его в компонент приложения и использовал его, пришло время добавить некоторые Mockdata Отказ На этот раз мы собираемся использовать Государства реагирования работать с нашими данными. Это облегчает все возможное, чтобы выполнить операции CRUD и обновлять вид соответственно. Добавьте этот код в компонент Todo:

class Todo extends Component {  state = {    edit: false,    id: null,    mockData: [{      id: '1',      title: 'Buy Milk',      done: false,      date: new Date()    }, {      id: '2',      title: 'Meeting with Ali',      done: false,      date: new Date()    }, {      id: '3',      title: 'Tea break',      done: false,      date: new Date()    }, {      id: '4',      title: 'Go for a run.',      done: false,      date: new Date()    }]  }}

Вышеуказанное состояние также может быть помещено внутри конструктора. Выберите тот, который вам нравится.

Как вы можете видеть, Государство В реакции просто объект JavaScript со свойствами, такими как редактировать , ID, и Mockdata Отказ редактировать Собственность – булева. Он будет использоваться для отображения и скрытия формы редактирования для редактирования конкретного элемента в Mockdata Отказ ID Свойство используется для установки идентификатора текущего элемента внутри Mockdata для выполнения операции обновления.

Теперь, когда у нас есть Mockdata, добавленные в состояние, которое также называется Первоначальное состояние , пришло время добавить JSX. Если вы хотите узнать больше о JSX, то отправляйтесь на здесь Больше подробностей. Это синтаксическое расширение для JavaScript, которое производит реагирующие элементы для рендеринга данных на страницах.

JSX перечисляет все элементы в Mockdata, то есть выполняет работу «R» CRUD. Для этого сделать этот код в класс.

render() {  return (    
    {this.state.mockData.map(item => (
  • {item.title}
  • ))}
);}

Оказывать Метод прост. Во-первых, он имеет форму, которая используется для добавления нового элемента в список Todo. Эта форма имеет OnsUbmit событие и это называет OnsUbmithandle Метод, который мы напишем позже в этом компоненте.

Тогда у нас есть UL И просто отобразите все элементы внутри Mockdata и представляют заголовок и добавьте те же кнопки, что и в наших предыдущих примерах (удаление, редактирование и полное). Теперь, если вы запускаете свое приложение, используя команду «NPM Start», вы должны увидеть что-то вроде этого.

Теперь, когда R Операция завершена, настало время добавить создать Операция, которая является C в Crud. Добавьте OnsUbmithandle Способ для компонента Todo, как ниже.

onSubmitHandle(event) {  event.preventDefault();
  this.setState({    mockData: [...this.state.mockData, {        id: Date.now(),        title: event.target.item.value,        done: false,        date: new Date()    }]  });
  event.target.item.value = '';}

OnsUbmithandle Метод называется, когда нажмите кнопку «Добавить». Здесь мы используем метод setState в состоянии ToDo, который является:

Здесь метод setState вызывается для сброса состояния компонента Todo, который имеет Mockdata. Это просто добавляет новый элемент, взятый из поля ввода. Наконец, установите значение входного поля для пустого.

Перейдите вперед и обновите приложение в вашем браузере и введите «Хику» или что-нибудь, что вы хотите, и нажмите кнопку «Добавить». Вы должны иметь возможность увидеть новый элемент в нижней части списка, как указано выше.

Теперь, когда C сделается, пришло время для D, которое является удалением. Просто добавить ondeletehandle Способ для компонента Todo, как ниже.

onDeleteHandle() {  let id = arguments[0];
  this.setState({    mockData: this.state.mockData.filter(item => {      if (item.id !== id) {        return item;      }    })  });}

Этот метод срабатывает, когда нажата кнопка Удаления. Как видите, мы обязательно это и item.id к ondeletehandle Отказ это Ключевое слово необходимо, чтобы у нас есть доступ к текущему объему для доступа к состоянию компонента Todo с это Ключевое слово, в то время как идентификационная часть используется для удаления этого конкретного элемента.

Для доступа к элементу. Мы собираемся использовать аргументы [0] объект. Как только у нас есть идентификатор, то установите состояние и фильтруйте через MOCKDATA. Найдите элемент, который необходимо удалить и вернуть все элементы, кроме той, которые необходимо удалить.

Продолжайте и освежите свой браузер и нажмите Удалить на первом элементе, и вы должны увидеть, что он удален, как на экране ниже.

Это все для удаления детали. Часть обновления, как обычно, состоит из 2 частей. Во-первых, показать форму редактирования, когда нажата кнопка «Редактирование», затем выполните операцию обновления.

Чтобы показать и скрыть форму редактирования, мы собираемся использовать свойство редактирования, которые мы добавили в состояние. Так что добавьте ниже рендеритформ метод компонента.

renderEditForm() {    if (this.state.edit) {      return 
} }

Он проверяет состояние редактирования и основываясь на том, что он возвращает EditForm, который является синтаксисом JSX формы.

Теперь вызовите вышеуказанный метод в методе Render внутри возврата ключевое слово чуть выше текущей формы, как ниже:

{this.renderEditForm()}

Теперь, когда эта часть отсутствует нашего пути, пришло время манипулировать свойством редактирования. Добавьте ниже OneDithandle Метод тодо компонента:

onEditHandle(event) {  this.setState({    edit: true,    id: arguments[0],    title: arguments[1]  });}

Этот метод срабатывает, когда нажата кнопка редактирования. Мы обязательно три параметра: это , ID и Название Отказ это Ключевое слово используется для ссылки текущего компонента. Он устанавливает ID Свойство для идентификатора текущего элемента редактируется. Это устанавливает редактировать к правда и добавляет свойство заголовка в состояние, которое мы доступны позже в этом компоненте.

Теперь, когда у нас есть этот код в нашем компоненте, перейдите в браузер, обновитесь и щелкните на кнопке редактирования для первого элемента, который покажет форму редактирования, как ниже:

Эта форма имеет поле ввода и кнопку обновления. Теперь пришло время справиться с U-разной частью CRUD. Когда Обновить Кнопка, в форме редактирования, показанной выше, нажата, метод ниже будет срабатывается:

onUpdateHandle(event) {  event.preventDefault();
  this.setState({      mockData: this.state.mockData.map(item => {        if (item.id === this.state.id) {          item['title'] = event.target.updatedItem.value;          return item;        }
        return item;      })   });
   this.setState({      edit: false   });}

Добавьте вышеуказанный метод вашему компоненту Todo. Это устанавливает состояние компонента, отображается через Mockdata внутри состояния и находит элемент, который необходимо обновлять и установить его заголовок с новым заголовком. Наконец, установите свойство редактирования состояния в false, чтобы скрыть форму. Вот и все.

Теперь запустите свой код в браузере и попробуйте обновить первый элемент. Вы должны быть в состоянии увидеть обновленный заголовок.

Конечный метод используется для установки элемента в завершенное состояние. Добавьте ниже метод, который имеет значение именно.

onCompleteHandle() {    let id = arguments[0];
    this.setState({      mockData: this.state.mockData.map(item => {        if (item.id === id) {          item['done'] = true;          return item;        }
      return item;    })  });}

Вышеуказанный метод устанавливает свой свойство элемента в Mockdata в True. Это в значительной степени так же, как и в наших предыдущих двух примерах в ванильном JavaScript и угловых.

Теперь сделать эту работу, добавьте код ниже на «Li», чтобы установить свой класс на основе состояния свойства «Готово» в Mockdata.

className={ item.done ? 'done' : 'hidden' }

Теперь обновите свой браузер и нажмите кнопку «Полная кнопка». Вы должны быть в состоянии увидеть ниже изменения.

Ниже приведены основные CSS, которые необходимо добавить в index.csss Файл на заказ для отображения сделанных элементов на экране.

.done {  text-decoration: line-through;}

Вот и все. Как видите, RegiveS является еще более ориентированным компонентным решением для современных приложений JavaScript. Следующая задача для вас будет разделить элемент формы в свои собственные компоненты, чтобы нам не нужно использовать две элементы формы для обновления и добавления операций. Это должно быть простой и веселой задачей для всех.

Чтобы получить полный код, пожалуйста, клонировать ниже репозиторий.

ZAFAR-Salem/React-Todo Вклад в разработку ZAFAR-SaleM/React-Todo, создав счет на GitHub. github.com.