massef
@massef

Как правильно выводить данные Vuex, Vue?

Нужна помощь в понимании как правильней сделать.

Есть сервер на Express. Подключена внешняя библиотека которая забирает данные из закрытого API.
Для каждой конечной точки свой роут, вот допустим два из них.

// Тут получаем массив объектов всех валют.
router.get('/getmarketsummaries', async (req, res, next) => {
	try {
		res.json(await client.marketSummaries())
	} catch (error) {
		next(createError(404, error))
	}
})

// Тут получаем массив объектов открытых ордеров.
router.get('/getorderbook', async (req, res, next) => {
	try {
		res.json(await client.orderBook(req.query.market, req.query.type))
	} catch (error) {
		next(createError(400, error))
	}
})


Далее, на клиенте (Vue) я "стучусь" по этим роутам, получаю данные и сохраняю их в стейт (Vuex), все как положено через экшены мутации и т.д.
Тут я привел бы примеры полного кода, но его очень много, поэтому постараюсь объяснить так.

Единственное отличие, запрос к /getmarketsummaries я делаю с интервалом каждую секунду, чтобы получать актуальные цены.

В родительском компоненте я формирую карточки.
getTickers это геттер, который тянет данные из стейта, в нем и лежат все валюты, которые обновляются ежесекундно.
<b-col v-for="(ticker, index) in getTickers" :key="index">
	<Card :ticker="ticker"/>
</b-col>


Вот тут я и застрял.

Есть ведь еще роут /getorderbook, у которого так же есть геттер и данные в стейте.
Я ведь не могу в v-for генерировать карточки из двух массивов.
Соответственно нужно объеденить массивы, что я и делаю отдельным методом в соседнем тестовом компоненте.

НО, так как один из роутов обновляется каждую секунду, а в другом данные статичные,
то объедененый массив так же каждую секунду обновляется, что не есть хорошо.


Мне нужно на основе открытых ордеров, сформировать карточки и на основе тикеров в каждой карточке добавит вывод актуальной цены, чтобы рассчитать разницу.
К сожалению в апи нет готовых точек.

Возникает несколько вопросов:
1 - как правильней поступать в такой ситуации?
2 - плохая ли практика объединять подобные вещи на клиенте или лучше это делать на сервере и отдавать уже готовый массив?
3 - может я чего не знаю, можно ли как то формировать карточку на основе данных из двух массивов?
4 - правильно ли пихать часто обновляемые данные в стейт?
5 - я вообще все не правильно сделал? :)
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы