useAnimatedReaction¶
Функция useAnimatedReaction позволяет реагировать на изменения в shared value. Это особенно удобно при сравнении значений, ранее хранившихся в общем значении, с текущим значением.
Справочник¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Определения типов
1 2 3 4 5 6 7 8 9 10 | |
Аргументы¶
prepare¶
Функция, которая должна возвращать значение, на которое вы хотите отреагировать. Значение, возвращаемое этой функцией, используется в качестве первого параметра аргумента react.
1 2 3 4 5 6 7 8 9 10 11 12 | |
react¶
Функция, реагирующая на изменение значения, возвращаемого функцией prepare. Функция react имеет два параметра: текущее значение из функции prepare и предыдущее значение, которое первоначально устанавливается в null.
1 2 3 4 5 6 7 8 9 10 11 12 | |
dependencies¶
Необязательный массив зависимостей.
Актуально только при использовании Reanimated без плагина Babel в Web.
Возвраты¶
useAnimatedReaction возвращает undefined.
Пример¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | |
Замечания¶
-
Убедитесь, что в функции
resultне мутирует то же самое общее значение, которое было использовано в функцииprepare, так как это приведет к бесконечному циклу.1 2 3 4 5 6 7 8 9 10 11 12 13
function App() { useAnimatedReaction( () => { // highlight-next-line return width.value; }, (currentValue) => { // 🚨 An infinite loop! // highlight-next-line width.value += currentValue; } ); } -
Обратные вызовы, переданные в аргументах
prepareиresult, автоматически workletized и выполняются в UI thread. -
Технически вы можете реагировать на любое значение React с состоянием, используя
useAnimatedReaction, но вместо этого вам, вероятно, следует использоватьuseEffect.
Совместимость с платформами¶
| Android | iOS | Web |
|---|---|---|
| ✅ | ✅ | ✅ |