Форум программистов, компьютерный форум, киберфорум
React/ReactJS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.01.2018
Сообщений: 27

Как связать между собой текст списка и чекбокс в нем

29.05.2020, 21:13. Показов 3110. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!есть список состоящий из массива, нужно сделать так что бы текст <li> зачеркивался и отменялось подчеркивание в зависимости от состояния checkbox'а. не могу понять как их связать если при onChange checkbox'а не могу получить значение Подробнее ниже!
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import React from "react";
class App extends React.Component {
    constructor() {
        super();
        this.state = {arr:[{name:'Петя',index:'1',sost:'none'},{name:'Вася',index:'2',sost:'none'},{name:'Мика',index:'3',sost:'none'},{name:'Вика',index:'4',sost:'none'}],
        textDecoration:'none',indexperel:''
        }}
 
 
    perecherknutitext(event){
alert (Number(event.target.index));
     const list2=this.state.arr.map((item,index)=> {
          if (index===event.target.index) {alert("нашел");}
         //if (this.state.textDecoration === 'none') {
         //  this.setState({textDecoration: "line-through"});
         // })//  this.setState({indexperel: event.target.index})
 
 
     })
 
                // this.setState({textDecoration: "none"});
                // this.setState({indexperel: event.target.index})
 
     }
 
 
 
 
    render(){
        const list=this.state.arr.map((item,index)=>{
            return <React.Fragment>
                <li id={index} style={{textDecoration:this.state.textDecoration}}> {item.name}-{index}
                    <input type="checkbox" onChange={this.perecherknutitext.bind(this)} /></li>
 
 
            </React.Fragment>
 
 
 
        })
        return<div>
        <ul>{list}</ul>
 
 
        </div>;
    }}
 
 
export default App
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2020, 21:13
Ответы с готовыми решениями:

Как связать между собой 2 списка select в форме. Оба списка создаются запросами из бд
Вопрос вообще вот в чем есть форма в ней два списка. допустим в первом я выбираю номер одной группы и во втором списке должен появиться...

Как связать МК между собой?
Хочу связать 8 маленьких МК ATtiny2313 с одним большим ATmega16. Учитывая то, что знания у меня только теоретические, как это лучше...

Как связать между собой 3 класса
Подскажите пожалуйста, как можно связать между собой 3 класса.

5
0 / 0 / 0
Регистрация: 04.01.2018
Сообщений: 27
30.05.2020, 12:46  [ТС]
немного продвинулся! теперь не знаю как изменить значение конкретного элемента массива если он в стейт?
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
30.05.2020, 13:31
Лучший ответ Сообщение было отмечено Vadim501212 как решение

Решение

Vadim501212, оно?
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class App extends React.Component {
  state = {
    arr: [
      { name: "Петя", sost: "none", checked: false },
      { name: "Вася", sost: "none", checked: false },
      { name: "Мика", sost: "none", checked: false },
      { name: "Вика", sost: "none", checked: false },
    ],
  };
 
  handleChange = (index) => () =>
    this.setState((prev) => ({
      arr: Object.assign([], prev.arr, {
        [index]: {
          ...prev.arr[index],
          checked: !prev.arr[index].checked,
        },
      }),
    }));
 
  renderItems = () =>
    this.state.arr.map((item, index) => (
      <li style={{ textDecoration: item.checked ? "line-through" : "none" }}>
        {item.name}-{index}
        <input type="checkbox" onChange={this.handleChange(index)} />
      </li>
    ));
 
  render() {
    return <ul>{this.renderItems()}</ul>;
  }
}
1
0 / 0 / 0
Регистрация: 04.01.2018
Сообщений: 27
30.05.2020, 13:56  [ТС]
Спасибо, все работает! осталось разобраться как оно работает)

Добавлено через 15 минут
не успел про памятку прочитать в личке нет в теме нет,с интересом бы почитал памятку
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
30.05.2020, 14:13
Цитата Сообщение от Vadim501212 Посмотреть сообщение
не успел про памятку прочитать в личке нет в теме нет,с интересом бы почитал памятку
Vadim501212, не понял про памятку, но так наверное понятней будет
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function updateObject(obj, key, updater) {
  return Object.assign([], obj, {
    [key]: {
      ...obj[key],
      checked: updater(obj[key]),
    },
  });
}
 
class App extends React.Component {
  constructor() {
    super();
    this.state = {
      arr: [
        { name: "Петя", sost: "none", checked: false },
        { name: "Вася", sost: "none", checked: false },
        { name: "Мика", sost: "none", checked: false },
        { name: "Вика", sost: "none", checked: false },
      ],
    };
    this.toggle.bind(this);
  }
 
  toggle(index) {
    this.setState((prevState) => ({
      arr: updateObject(prevState.arr, index, (item) => !item.checked),
    }));
  }
 
  render() {
    const items = this.state.arr.map((item, index) => (
      <li style={{ textDecoration: item.checked ? "line-through" : "none" }}>
        {item.name}-{index}
        <input type="checkbox" onChange={() => this.toggle(index)} />
      </li>
    ));
 
    return <ul>{items}</ul>;
  }
}
0
0 / 0 / 0
Регистрация: 04.01.2018
Сообщений: 27
30.05.2020, 21:52  [ТС]
я только изучаю react и для меня важно разобраться как оно работает,день разбираюсь не вкурю как оно работает, может кто вкратце объяснит или поделится на теорию ясно что Object.assign возвращает массив который перезаписывает массив в стейте, но не понимаю какие именно параметры в него передает.Очень сложно как то получается для меня
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2020, 21:52
Помогаю со студенческими работами здесь

Как связать между собой TListView
Всем доброй ночи. Пишу курсач на ночь глядя и некоторые аспекты меня волнуют. В общем у меня программа где-то на 4 формы в одной из форм...

Как связать поля в БД между собой?
Есть Таблица Student.есть поле оценка по 5-бальной шкале,и есть поле по 100-бальной шкале. Вопрос - как сделать так чтобы при введение в...

Как связать между собой таблицы?
как связать между собой таблицы ремонта телефонов? есть таблица &quot;заказы&quot;, в ней указано дата, код заказа, фио, модель телефона, поломка,...

Как связать между собой TextBox и ScrollBar?
У меня в задании значение рентабельности должно отображаться с помощью Scrollbar и текстового поля. Я связала по аналогии с примером так: ...

Как в админке связать поля между собой
class Category(models.Model): title = models.CharField(max_length=64) def chained_relation(self): return...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru