Сохранение значений в массиве после выхода из компонента

#javascript #reactjs

#javascript #reactjs

Вопрос:

Я пытаюсь сохранить значения в массив, но когда я «оставляю» компонент, значения сбрасываются так, как они были до того, как я добавил новые значения.

Моя цель — создать приложение Rooms, в котором я мог бы создать новую комнату с определенным именем, типом и цветом фона. Когда пользователь попадает в комнату, нажав на нее, он может выбрать из списка приборов то, что выбрал пользователь, и оно будет отображаться на странице.

Это работает хорошо, но когда я выхожу из комнаты и возвращаюсь, приборы сбрасываются. Как я могу это предотвратить?

Код компонента «Мои комнаты»:

 import React, {useState} from 'react'
import {Link} from 'react-router-dom'

export default function Rooms(props) {

    const [arr, setArr] = useState()
    const [disply, setDisply] = useState('none')
    const [applist, setAppList] = useState([])
    const [arrOfApp, setArrOfApp]= useState([
        ['lamp','boiler','sterio'],
        ['air','room','bed']
    ])

    let newAppliances = () =>{
        arrOfApp.map((item,index)=>{
            if(index===props.index){
                setArrOfApp(arrOfApp => [...arrOfApp,arr])
                setAppList(arrOfApp)
            }})
    }
    let disFunc = () =>{
        if(disply === 'none'){
            setDisply('block')
        }else{
            setDisply('none')
        }
    }
    let appliances = (e) =>{
        setArr(e.target.value) 
    }
  
    return (
        <div>
            <h1>Smart House</h1>
            <Link to='/' ><p>{props.index}</p></Link>
            <p>Room type: {props.type}</p>
            <p>Room name: {props.name}</p>

            <button onClick={disFunc}>Add appliances</button>

            <div style={{display: disply}}>

             <select onChange={appliances}>
                <option selected value=""></option>
                <option  value="Air-Conditioner">Air-Conditioner</option>
                <option value="boilermaker">boilermaker</option>
                <option value="stereo system">stereo system</option>
                <option value="lamp">lamp</option>
             </select>
             <button onClick={newAppliances}>Add</button>

             {arrOfApp.map((item)=>{
                return(
                    <span><br/>{item}<br/></span>
                )
            
            })}
                </div>
        </div>
    )
}
 

Код компонента My Appliances:

 import React, {useState} from 'react'

export default function Appliances(props) {

    const [applist, setAppList] = useState(props.app)

    return (
        <div>
            
            {applist.map((item) => {
                
                return(
                    <span>{item}</span>
                )
            })}
        </div>
    )
}
 

Комментарии:

1. вы хотите, чтобы данные сохранялись даже после обновления приложения? Если да, то загляните в localStorage: developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

2. Он должен храниться где-то за пределами компонента. Например. поднимите его в корень приложения, поместите в глобальный контейнер состояний, сохраните его в локальном / сеансовом хранилище, сохраните в базе данных в каком-либо бэкэнде, …