Как вывести объекты из localStorage в React?

В localStorage записаны данные:
5a34d8ab774cc422178128.png
Их все нужно вывести и разделить на разные div блоки (task0, task1, .... , taskn)
Я делаю так:
class TaskOutput extends Component {  
    render() {
        for (var i = 0; i < localStorage.length; i++) {
            const list = JSON.parse(localStorage.getItem('task'+i))
            return (
                <div className={'task'+i}>
                    <h1>{list['title']}</h1>
                    <p>{list['description']}</p>
                </div>
            )
        }
    }
}

Выводит только первый ключ task и цикл останавливается. Как заставить вывести всё? Помогите пожалуйста:)
  • Вопрос задан
  • 4153 просмотра
Решения вопроса 1
Ni55aN
@Ni55aN
Нужно не return делать, а записывать это в массив. И ключ брать по индексу, а не в виде "task"+i

class TaskOutput extends Component {  
    render() {

        var list = [];
        for (var i = 0; i < localStorage.length; i++) {
            const list = JSON.parse(localStorage.getItem(localStorage.key(i)))
            list .push(
                <div className={'task'+i}>
                    <h1>{list['title']}</h1>
                    <p>{list['description']}</p>
                </div>
            )
        }
        return <div>list</div>;
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gadfi
@gadfi
https://gamega.org
за подобные вещи в render в приличном обществе пальцы ломают
чтение из localStorage, интернета, любые другие долгие операции и операции для работы с данынми не должны быть в компоненте

я бы использовал redux для данных, thunk для асинхроных операций и если бы вы захотели потом добавить бекенд с апи, или подключить какой то sas вроде firebase вместо localStorage, вам бы не пришлось менять в компонентах ни строчки кода
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы