Как изменить цвет и название кнопки в определенной ячейке таблицы пользовательского интерфейса материала

#javascript #reactjs #react-hooks #material-ui

Вопрос:

Я использую Material Table для отображения своих данных. Вот это выглядит так: https://i.postimg.cc/4x6hbm5N/image.png

Я объявил state выше в своем коде

 const [sharedOrdersList, setShareOrdersList] = useState([])  

Когда User вы нажмете на Share кнопку, я нажму на Order Id «до sharedOrdersList «. Это работает. Но теперь моя проблема заключалась в том, что я хочу изменить название кнопки на UnShare и цвет кнопки на другой цвет. Я попробовал несколько способов. Но я не знаю, как это сделать

Вот мой функциональный код:

 const shareOrderBtnClick = (orderID) =gt; {  sharedOrdersList.push(orderID)   alert("share Btn Clicked")  console.log(sharedOrdersList)  }  

Код Возврата:

 allOrderDatas.map((row) =gt; (  lt;TableRowgt;  lt;TableCell"gt;  lt;Button variant="contained"   onClick={()=gt;{shareOrderBtnClick(row.orderID)}}  style={{ backgroundColor:sharedOrdersList.includes(row.orderID)?"#59886B":"#D54062",}}gt;   lt;ShareIcon /gt;{sharedOrdersList.includes(row.orderID)?"UnShare":"Share"lt;/Buttongt;  lt;/TableCellgt;  lt;/TableRowgt;  

Я не знаю, как изменить конкретный элемент в ячейке в строке таблицы. Пожалуйста, помогите мне с некоторыми решениями.

Ответ №1:

состояния в react неизменны. useState возвращает значение и функцию обновления. Вы не можете напрямую изменить значение. Чтобы обновить состояние, вам нужно вызвать setShareOrdersList функцию с новым значением.

В твоем примере

 const shareOrderBtnClick = (orderID) =gt; {  setShareOrdersList([... sharedOrdersList, orderID]);  // OR BETTER // setShareOrdersList(prevState =gt; [...prevState, orderID]);  }