Аргументы
По умолчанию key будет передан в fetcher в качестве аргумента. Итак, следующие 3 выражения эквивалентны:
Множественные аргументы
В некоторых сценариях полезно передать несколько аргументов (может быть любое значение или объект) в fetcher. Например, запрос на выборку с авторизацией:
Это неверно. Поскольку идентификатор (также ключ кеша) данных - это '/api/user',
даже если token изменится, SWR все равно будет использовать тот же ключ и возвращать неверные данные.
Вместо этого вы можете использовать массив в качестве параметра key, который содержит несколько аргументов fetcher:
Функция fetcher принимает параметр key как есть, и ключ кеша также будет связан со всем аргументом key. В приведенном выше примере url и token тесно связаны с ключом кеша.
В более старых версиях (< 2) функция fetcher принимает параметр key в качестве аргументов отдельно
Передача объектов
Начиная с версии SWR 1.1.0 объектно-подобные ключи будут автоматически сериализоваться.
Допустим, у вас есть другая функция, которая делает выборку данных с областью действия пользователя: fetchWithUser(api, user). Вы можете сделать следующее:
Вы можете напрямую передать объект в качестве ключа, и fetcher тоже получит этот объект:
В более старых версиях (< 1.1.0) SWR поверхностно сравнивает аргументы при каждом рендеринге и запускает повторную проверку, если какой-либо из них изменился.