@venanen

Почему React вызывает ре-рендеринг бесконечность раз?

Добрый день.
Мастерю ToDo App. По клику "Добавить заметку" диспатчу соответственный экшн, тут все хорошо.
Список готовых заметок хочу хранить в массиве, и отрисовывать их через .map(), а чтобы после каждого добавления заметки и перерисовки массив заметок не сбрасывался, записываю его в state.
Но, реакт выдает ошибку:
Too many re-renders. React limits the number of renders to prevent an infinite loop.

Я попробовал в state записать просто любое число, но ошибка не исчезла. Убираю изменение state - ошибка пропадает. Добавляю с любым значением - снова бесконечный ре-рендеринг.
Код компонента выглядит так:
import React, {useState} from 'react'
import './Notes.css'
import { connect } from 'react-redux';
const Notes = (props)=>{
	let [notes, setNotes] = useState();
	let key = 0;
	setNotes(123123)
	console.log(props.notes)

	/*for(let i = 0; i<16; i++){
		notes.push(<div key={++key} className="item">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div>)

	}*/

	return (

		<div className="masonry">
			{ console.log(props.notes)} {
				/*props.notes.map(

				(e)=>{
				return <div key={++key} className="item">{e[0]} - {e[1]}</div>
				}
			)*/
			}
		</div>
	)
}

const mapStateToProps = (state)=>{
	return {
		notes: state
	}
}

export default connect(mapStateToProps)(Notes)

P.S. Знаю, что выполнять логику не в редьюсерах, ни в компонентах не стоит, буду чуть позже использовать redux-thunk, пока так
  • Вопрос задан
  • 8633 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Потому что вы постоянно обновляете стейт.

Наверное, вы хотели задать начальное значение - указывайте его в качестве параметра при вызове useState.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы