169 похожих чатов

Возникла следующая идея, хотелось бы узнать ваше мнение :) С учётом

наличия локали в пути [locale] во все ссылки в приложении необходим префикс с локалью, хранящейся в сторе. С одной стороны ничего сложного, просто берём значение локали и создаём литеральную строку:

<a href={`/${$locale}${url}`}>
Link
</a>

Идея в том, имеет ли смысл создать экшн, чтобы автоматом добавлять префиксы с локалью?

<a {href} use:locale>
Link
</a>

Экшн можно объявить в отдельном файле, импортировать туда значение стора и добавлять префикс, обновлять его при смене локали.

Вопрос в том, не будет ли это оверинжинирингом и не будет ли это бить по перформансу с учетом большого количества подписок через экшн?

15 ответов

20 просмотров

Так не сработает. Экшены же не перезапускаются, если передаваемые пропсы не меняются (а тут они и не будут). Придётся императивно href менять, а это уже не подойдёт никак. К сожалению, ничего лучше нет, чем просто завести файлик routes.ts, где завести переменные на каждый путь, и если он локале-специфичный, то делать это через derived-стор.

Eric-Rovell Автор вопроса
Daniil Kozlov
Так не сработает. Экшены же не перезапускаются, ес...

Можно пример, если таковой есть, пожалуйста

Eric-Rovell Автор вопроса
Daniil Kozlov
Вот пример из блога моего.

Спасибо, попробую разобраться!

Eric Rovell
Спасибо, попробую разобраться!

Так или иначе я всем бы советовал заводить такой файлик, даже если нет планов по разным локалям, потому что иначе очень больно будет менять структуру URL — а это когда-нибудь всегда приходится делать.

Eric-Rovell Автор вопроса
Daniil Kozlov
Так или иначе я всем бы советовал заводить такой ф...

Вопрос возможно глупый, но большое количество derived не будет бить по производительности? Или это та самая экономия на спичках?

Eric Rovell
Вопрос возможно глупый, но большое количество deri...

Тебя же не смущает использование $_() для вставки ключей? :) Это ж всё тоже дерайвды.

Eric-Rovell Автор вопроса
Daniil Kozlov
Тебя же не смущает использование $_() для вставки ...

Да, другого более практичного способа пока не нашёл...

Eric-Rovell Автор вопроса
Daniil Kozlov
Тебя же не смущает использование $_() для вставки ...

Я там посмотрел на пакет i18n, понял как работает и написал свой велосипед на readable сторе для хранения словарей, через derived тащу нужное сообщение с текущей локалью😅

Eric Rovell
Да, другого более практичного способа пока не нашё...

Не заморачивайся на этот счёт. Дерайвды очень дешевы в обращении. Не так дешевы как строка текста, конечно, но всё равно неплохо. При многократной подписке на один и тот же стор свелт держит только одну подписку, поэтому в случае с $_ у тебя по факту будет одна подписка, которая выдаёт функцию. В случае с путями будет еще несколько. Можно, наверное, вместо отдельных дерайвдов сделать одну мапку, чтоб подписка была одна, но это несущественно.

Eric-Rovell Автор вопроса
Daniil Kozlov
Интересное решение, хаха. А зачем?

Тот пакет было сложно настроить для саппера. Были примеры, да, но и были там функции лишние для меня. А так, хоть разобрался в чём-то и реализовал своё :) Ещё, мне нужна была возможность хранить массивы в словарях, автор не собирался внедрять это, хотя в том же i18n для реакта так можно😁

Eric Rovell
Тот пакет было сложно настроить для саппера. Были ...

Мм, ты давно делал? Массивы хранить не проблема уже больше полугода, просто надо использовать вместо _ функцию json, она вернёт по ключу то, что попросишь. В остальном отлично, почему бы и нет :)

Eric-Rovell Автор вопроса
Daniil Kozlov
Мм, ты давно делал? Массивы хранить не проблема уж...

Да, где-то в ноябре. Я потом ради интереса покажу, как всё будет готово. Ничем не удивить, но было бы интересно услышать мнение со стороны😁

Eric-Rovell Автор вопроса
Daniil Kozlov
Вот пример из блога моего.

За идею спасибо, очень понравилась. Буду точно делать аналогично

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта