mobx-реагировать: наблюдать за функцией рендеринга - PullRequest
0 голосов
/ 11 декабря 2018

Немного длинное введение, но я думаю, что важно понять проблему.

У меня есть компонент "A", который использует компонент "B" из сторонней библиотеки.«A» передает (как реквизит компоненту «B») функцию, которая возвращает компонент.когда компонент "B" выполняет рендеринг, он вызывает функцию обратного вызова, которую "A" отправил как опору.

Проблема: обратный вызов использует значения из хранилища, но, поскольку он вызывается из функции рендеринга "B",это не наблюдается, поэтому функция рендеринга «B» не вызывается при изменении значений, используемых обратным вызовом.(как описано здесь: https://github.com/mobxjs/mobx/blob/gh-pages/docs/best/react.md#mobx-only-tracks-data-accessed-for-observer-components-if-they-are-directly-accessed-by-render).

Решение: использование компонента «Наблюдатель», обертывающего обратный вызов.

Это работает (то есть делает функцию рендеринга B вызываемой, когда значения из ее обратного вызоваизменено), но!

Библиотека ожидает 2 возможных результата от обратного вызова (один из них равен нулю - или любой ложный), но теперь обратный вызов возвращает оболочку всех времен, поэтому он никогда не равен нулю ибиблиотека не может делать то, что она должна делать с нулевым значением.

Как я могу сделать обратный вызов, который я передаю от А к В, чтобы вернуть либо компонент, либо нуль, если он обернут "Наблюдателем""?

...