В настоящее время я работаю над компонентом календаря, используя Reaction-Big-Calendar.
В настоящее время у меня есть один Wrapper для него, который извлекает данные из базы данных и отправляет их в компонент календаря. Однако я создаю функцию, позволяющую «отправлять» события календаря на этот компонент из любого места.
В настоящее время у меня есть только варианты использования, которые взяты из встроенной в систему уведомлений веб-сайта, будет возможность добавить внешнее событие, отправленное как уведомление, в ваш собственный календарь.
Однако, возможно, я захочу отправить события в календари пользователей из другого веб-приложения через мой сокет-сервер (socket.io).
Я не уверен, каков «правильный» способ реагировать технически.
Теперь я добавил, что добавил
static getDerivedStateFromProps(nextProps, prevState){
if(nextProps.propInput === true){
nextProps.reset()
return {events : {...prevState.events, ...nextProps.events}}
} else return null
}
внутри моего CalendarWrapper, который в основном делает для меня следующее:
1) Я обновляю реквизиты, отправленные в обертку, либо из родительского компонента, либо из магазина приставок (я буду использовать 2-й)
2) Это вызывает getDrivedStateFromProps и проверяет, получает ли он значение propInput как true, и, если это так, объединяет новые события, отправляемые в качестве реквизитов, в текущие события календаря.
3) затем он запускает функцию обратного вызова (nextProps.reset ()), чтобы сбросить propInput в FALSE, который запускает еще один запуск getDrivedStateFromProps, но на этот раз возвращает ноль и не вызывает новый setState.
Это было мое собственное придуманное решение о том, КАК отправлять новые события в эту оболочку календаря из избыточного хранилища. Это кажется неортодоксальным, но для меня это единственный способ получить золотую середину с чистым редуксом и всем, что сохранено в редуксе, и с локальным состоянием каждого компонента.
Существует ли технически лучший и более совершенный способ решения этой проблемы?
Заранее спасибо.