Я использую mobx-react / mobx-react-lite для управления состоянием
Используя классы, я могу определить ненаблюдаемый idToDelete для хранения идентификатора выбранного элемента, открыть модальное окно, используя наблюдаемое, и когда пользователь нажимает «Удалить», я знаю, что элемент нужно удалить. Идентификатор "запоминается" компонентом при повторном рендеринге.
class Greeting extends React.Component {
idToDelete = null;
confirmDelete = id => {
this.idToDelete = id;
openConfirm = true;
}
closeModal = () => {
openConfirm = true;
this.idToDelete = null;
}
@observable
openConfirm = false;
render() {
// List of items with delete button
<button onClick=this.confirmDelete(id)>Delete</button>
// Confirm Delete Modal
}
}
Но в компоненте без состояния идентификатор становится нулевым (значение инициализации) при каждом повторном рендеринге.
Используя ловушку useLocalStore, я могу хранить наблюдаемые значения:
Все свойства возвращенного объекта станут наблюдаемыми автоматически.
Но я не хочу повторять рендеринг только потому, что я сохраняю / меняю идентификатор.
Использование React.React.createContext / useContext кажется мне немного излишним (это своего рода частное значение, и оно не актуально вне самого компонента)
Есть ли способ добиться этого с помощью «локального хранилища»? (без наблюдаемой конверсии)
Каковы лучшие практики в этой ситуации?