簡體   English   中英

使用鈎子將值插入數組(反應)

[英]Insert value into a array with hooks (REACT)

所以我有一個 object 我想為數組添加值。

這是我的 object {roomType: t, roomName: n, roomColor: c, appliances:[1] }])我想在不改變整個 ZA8CFDE6331BD59EB2666666ZZ 的情況下為設備添加值。

這是我的整個組件:

 function App(props) { const [rooms, setRooms] = useState([ {roomType:'bedroom', roomName: "snir", roomColor: "blue"} ]) let NewRoom = (t,n,c) => { setRooms([...rooms,{roomType: t, roomName: n, roomColor: c, appliances:[1] }]) } let newAppliances = (a,n) => { rooms.map((item) =>{ if(n === item.name){ item.appliances.push(a) } }) } console.log(rooms) const [indexRoom, setIndexRoom] = useState([]) let chack = (rIndex,rName,rType) =>{setIndexRoom([rIndex, rName,rType])} return ( <div className="App"> <Router> <Switch> <Route exact path = '/' > <Home arr = {rooms} func = {chack} /> </Route> <Route path = '/addroom' render= { (props) =><AddNewRoom add = {NewRoom}{...props}/>}/> <Route path = '/room'> <Rooms arr = {rooms} index = {indexRoom[0]} name = {indexRoom[1]} type = {indexRoom[2]} funcApp = {newAppliances} /> </Route> </Switch> </Router> </div> ); } export default App;

在 newAppliances 我想更新房間的電器。

我相信newAppliances方法你想更新一個房間的電器,你可以通過執行以下操作來做到這一點,

let newAppliances = (a,n) => {
    const index = rooms.findIndex(item => item.name === n);
    if(index > -1) {
       if(rooms[index].hasOwnProperty(appliances) && rooms[index].appliances.length > 0) {
           rooms[index].appliances.push(a);  
       }
       else rooms[index].appliances = [a];    
    }
    setRooms([...rooms]);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM