Я новичок в реактиве, и я все еще получаю голову вокруг флюса. Мой личный проект Hello World - приложение для отслеживания времени/биллинга, в основном прославленный секундомер, и я застрял.Реагентное наблюдение за дочерними элементами - я делаю это наилучшим образом?
По существу, есть компонент <TaskList />
с несколькими детьми <Task />
. Запуск задачи создает интервал, хранящийся в компоненте задачи state
, используемый для обновления отображаемого времени. Задачи могут быть запущены, остановлены и возобновлены, но одновременно не должно выполняться две задачи. Запуск/возобновление задачи должен остановить любые другие запущенные в данный момент.
Мой вопрос в том, как я могу указать, чтобы запущенная задача остановилась при запуске новой задачи?
В каждом из componentDidMount
методов моей задачи компоненты, они слушают за START
события, инициированного другими задачами, начиная и запустить свою собственную stop()
функцию, если один излучаются, но я, кажется, нашел себя с ошибкой: Uncaught Error: Invariant Violation: Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.
.
Я бы вставлял свой код, но моя кишка говорит, что я все это сделал, и мой код не имеет значения.
Должен ли я останавливать другие задачи в своем Магазине, а не в моем компоненте? Это имеет смысл, но как я могу очистить свои интервалы, прикрепленные к каждой задаче?
(Я надеялся, что резиновая утка на этом, возможно, поможет мне, но это не так).
Повторное чтение «где ваше государство живет» бит документов React действительно помогло мне здесь, а также ваш ответ. В My Store теперь записывается, работает ли состояние задачи или нет, тогда компонент обновляет часы, когда он получает реквизиты от родителя , чтобы сказать, существует ли текущая работа. –
xcession