Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.11.2018, 17:44
Интересующийся
Отправить личное сообщение для melnikov24 Посмотреть профиль Найти все сообщения от melnikov24
 
Регистрация: 24.08.2018
Сообщений: 12

Сделать виджет комментариев на react js
Напишите виджет комментариев на React со следующей функциональностью:

1. Отображение списка комментариев: автор, текст, дата и время

2. Добавление нового комментария (поля для ввода: имя автора, текст)

3. Удаление комментария (кнопка удаления рядом с каждым комментарием)

4. Сохранение состояния приложения в localStorage в формате JSON (при перезагрузке страницы все добавленные комментарии должны подтягиваться оттуда)
Ответить с цитированием
  #2 (permalink)  
Старый 30.11.2018, 20:48
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

Вы просите готовый скрипт с нуля.

Это работа, и за нее обычно платят деньги.
Для таких сообщений предназначен раздел форума "Работа".

Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела.
Ответить с цитированием
  #3 (permalink)  
Старый 30.11.2018, 21:19
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 641

$ create-react-app comments_react
$ cd comments_react
$ yarn add date-fns

App.js
import React, { Component } from 'react'
import './App.css'
import { format } from 'date-fns'
class App extends Component {

  state = {
    comments: [],
    form: {
      name: '',
      comment: ''
    }
  }

  componentDidMount() {
    if (localStorage.getItem('state')) {
      this.setState({ ...JSON.parse(localStorage.getItem('state')) })
    }
  }

  addComment = () => {
    this.setState({
      comments: [
        ...this.state.comments,
        {
          id: this.state.comments.length ? this.state.comments.reduce((p, c) => p.id > c.id ? p : c).id + 1 : 1, // max id +1
          name: this.state.form.name,
          comment: this.state.form.comment,
          date: new Date()
        }
      ],
      form: {
        name: '',
        comment: ''
      }
    }, () => localStorage.setItem('state', JSON.stringify(this.state)))
  }

  removeComment = (id) => {
    this.setState({
      comments: this.state.comments.filter(comment => comment.id !== id)
    }, () => localStorage.setItem('state', JSON.stringify(this.state)))
  }

  handleChange = (e) => {
    console.log(e.target.name)
    this.setState({
      form: {
        ...this.state.form,
        [e.target.name]: e.target.value,
      }
    })
  }

  render() {
    return (
      <div className="App">
        {this.state.comments.map(comment => <div key={comment.id}>
          <span style={{ fontStyle: 'italic' }}>{comment.id} - {format(comment.date, 'DD/MM/YYYY')}: </span>
          <strong>{comment.name}, </strong>
          <span>{comment.comment}</span>
          <button onClick={this.removeComment.bind(null, comment.id)}>Удалить комментарий</button>
        </div>)}
        <div>
          <label>Имя: <input
            type="text"
            value={this.state.form.name}
            name="name"
            onChange={this.handleChange} /></label>
          <label>Комментарий: <textarea
            name="comment"
            value={this.state.form.comment}
            onChange={this.handleChange}></textarea>
          </label>
          <button onClick={this.addComment}>Добавить комментарий</button>
        </div>
      </div>
    )
  }
}

export default App


$ yarn start

Последний раз редактировалось SuperZen, 30.11.2018 в 21:20. Причина: 40 минут однако )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поправить форму комментариев cackle (js) seotapki Работа 0 19.01.2018 04:19
js Виджет для сайта bondaryoff Общие вопросы Javascript 3 29.10.2017 09:58
Вакансия: Frontend-разработчик( react js) в Москве! Мария Комарова Работа 0 22.03.2017 12:13
Можно ли сделать выбор имени запускаемого js скрипта из <select> super28 Общие вопросы Javascript 6 12.12.2009 22:22
Вставка блока php в js...Как сделать? reup Общие вопросы Javascript 2 30.07.2009 11:02