У меня есть статья, представляющая собой объект mobx-state-tree, и я использую его в приложении реагирования.
Это действие внутри моего дерева
setId(id: string) {
self.id = id
this.updateProduct()
},
И событие
<input
value={comp.productId}
onChange={(e) => comp.setId(e.target.value)}
/>
Проблема в том, что this.updateProduct()
запускается при каждом изменении и выполняет асинхронный вызов после каждого нажатия клавиши.
Я бы хотел воспользоваться реакцией Мобса и использовать что-то вроде
reaction(
() => ({
id: this.id
}),
() => {
this.updateProduct()
}, {
delay: 500 // this is the key thing
})
Я обнаружил, что задержка довольно полезна в таких случаях, поэтому я хотел бы использовать их внутри дерева.
Полезно ли добавлять реакции в дерево состояний mobx? Если да, где находится правильное место для использования реакций?
Я могу определить реакцию внутри реактивного компонента, но они будут вне дерева. Это хорошая практика, чтобы быть вне дерева?