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

Проблема с отображением результата запроса

25.07.2019, 13:01. Показов 1542. Ответов 2

Студворк — интернет-сервис помощи студентам
Добрый день! Перейду сразу к сути. У меня есть готовый API от imdb. Делаю цикличный запрос, сохраняю каждый результат запроса в state. Показываю результат по шаблону. Но проблема именно в последнем.
Они не отображаются сразу, приходится заново нажимать на ссылку на страницу чтобы они отобразились. Хотя в инспекторе можно увидеть что запрос был совершен успешно и всё сохранилось в массиве(Скрины будут ниже). Заранее благодарю!

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
50
51
52
53
54
55
56
57
58
59
60
61
62
class Movie extends Component {
    constructor(props){
        super(props);
 
        this.state = {
            list: []
        }
    }
 
    query(se){
        axios.get(`http://www.omdbapi.com/?i=tt3896`+se+`8&apikey=2cc0d8ab`)
          .then(response => {
              if(response.data.Response === "True"){
                  this.state.list.push(response.data);
              }
          });
    }
 
    componentWillMount(nextProps, nextState, nextContext) {
        for (let i = 0; i < 19; i++){
            if (i <= 9) {
                i = `0${i}`;
            }
            this.query(i);
        }
    }
 
    shouldComponentUpdate(nextProps, nextState, nextContext) {
        return true;
    }
 
    render(){
        return(
          <main>
              {console.log(this.state.list)}
              <Mov list={this.state.list}/>
          </main>
        );
    }
}
 
 
 
class Mov extends Component {
    constructor(props){
        super(props);
 
        this.state = {
            list: this.props.list
        }
    }
 
    render() {
        return(
          <div>
              {this.state.list.map((dt, index) => (
                <h1 key={index}>{dt.Title}</h1>
              ))}
          </div>
        );
    }
}
Миниатюры
Проблема с отображением результата запроса   Проблема с отображением результата запроса   Проблема с отображением результата запроса  

Проблема с отображением результата запроса  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2019, 13:01
Ответы с готовыми решениями:

Проблема с отображением текста при выводе из SQL запроса
При получении результата запроса даных с SQL-сервера в броузере текст из базы отображается вопросительными знаками. Регииональные...

Проблема с выводом результата запроса
Запрос = Новый Запрос; Запрос.Текст = &quot; |ВЫБРАТЬ | ХозрасчетныйОстатки.субконто1, | ХозрасчетныйОстатки.Организация, ...

Отправка письма с отображением результата отправки.
Здравствуйте друзья. Хотелось бы сделать отправку письма красивее, а именно во время отправки отображать срасывый статус бар при...

2
 Аватар для Egor.S
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651
25.07.2019, 14:56
не нужно в стейт напрямую писать, для этого setState существует.
0
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
05.08.2019, 14:15
Проблема в том, что в методе query был нарушен принцип неизменяемости данных (массивов и объектов) в state. То есть эти данные нужно НЕ изменять, а заменять (Событие добавление элемента в массив методом push у массивов никак нельзя отловить через javascript).

И Egor.S правильно говорит, что не нужно заменять данные через прямое обращение к this.state. Нужно это делать через this.setState().

Метод query можно переписать следующим образом:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
    query(se){
        axios.get(`http://www.omdbapi.com/?i=tt3896`+se+`8&apikey=2cc0d8ab`)
          .then(response => {
              if(response.data.Response === "True"){
                  this.setState({
                       list: [...this.state.list, response.data]
                       // или так
                       // list: this.state.list.concat([response.data])
                       // есть кучу способов как вернуть новый массив с добавленным элементом
                  })
              }
          });
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.08.2019, 14:15
Помогаю со студенческими работами здесь

Автоматический поиск по записям с отображением результата в форме
Всем привет!:) Нуждаюсь в вашей помощи. Нужно создать форму, в которой осуществляется автоматический поиск по записи. Например, я...

Как результат запроса другого результата запроса запихнуть в массив?
Как результат запроса другого результата запроса запихнуть в массив? Здравствуйте, у меня такая вот небольшая головоломка, у меня есть...

Ошибка с отображением запроса бд
Здравствуйте, помогите разобраться, Есть два запроса, и dataGridView для отображения результатов запроса. Если правильное значение...

Отображением вычисляемого поля запроса в поле формы
В поле формы «Форма ввода» есть поле «Поле63», в котором должен отображаться результат находящийся в поле «Wes», запроса «Поставка газа»....

Проблема с отображением
Проблема вот в чем-при попытке просмотреть формы созданные мной, в браузере, допустим IE, Firefox - они не отображаются. Чем это может быть...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru