Я хочу использовать эту библиотеку для нативной реакции, но не могу понять, как это сделать. Ссылка на документацию для response-native не работает. Могу ли я использовать библиотеку для react-native?





React-Spring можно использовать для react-native. Они обновили его для всей платформы.
Попробуйте это: -
yarn add [email protected]
import React from 'react'
import { StyleSheet, Text, View, TouchableWithoutFeedback } from 'react-native'
import { Spring, animated } from 'react-spring/dist/react-spring-native.esm'
const styles = {
flex: 1,
margin: 0,
borderRadius: 35,
backgroundColor: 'red',
alignItems: 'center',
justifyContent: 'center',
}
export default class App extends React.Component {
state = { flag: true }
toggle = () => this.setState(state => ({ flag: !state.flag }))
render() {
const { flag } = this.state
return (
<Spring native from = {{ margin: 0 }} to = {{ margin: flag ? 100 : 0 }}>
{props => (
<TouchableWithoutFeedback onPressIn = {this.toggle}>
<animated.View style = {{ ...styles, ...props }}>
<Text>It's working!</Text>
</animated.View>
</TouchableWithoutFeedback>
)}
</Spring>
)
}
}
Спасибо за вашу любезную помощь. Когда я попытался использовать animated.View, он выдает ошибку, но предоставленное @hpalu решение работает. Спасибо вам обоим :)
Пример ниже работает.
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, TouchableWithoutFeedback} from 'react-native';
import { Spring, animated } from 'react-spring'
const AnimatedView = animated(View)
const styles = {
flex: 1,
margin: 0,
borderRadius: 35,
backgroundColor: 'red',
alignItems: 'center',
justifyContent: 'center',
}
type Props = {};
export default class App extends Component<Props> {
state = { flag: true }
toggle = () => this.setState(state => ({ flag: !state.flag }))
render() {
const { flag } = this.state
return (
<Spring native from = {{ margin: 0 }} to = {{ margin: flag ? 100 : 0 }}>
{props => (
<TouchableWithoutFeedback onPressIn = {this.toggle}>
<AnimatedView style = {{ ...styles, ...props }}>
<Text>It's working!</Text>
</AnimatedView>
</TouchableWithoutFeedback>
)}
</Spring>
);
}
}
Тем, у кого есть проблемы, попробуйте использовать другой импорт. Это сработало для меня на Expo React Native.
import React, { Component } from 'react';
import { Text, View, TouchableWithoutFeedback } from 'react-native';
import { Spring, animated } from 'react-spring/renderprops-native';
const AnimatedView = animated(View);
const styles = {
flex: 1,
margin: 0,
backgroundColor: 'red',
alignItems: 'center',
justifyContent: 'center',
}
export default class App extends Component {
state = { flag: true }
toggle = () => this.setState(state => ({ flag: !state.flag }))
render() {
const { flag } = this.state
return (
<Spring
native
from = {{ margin: 0 }}
to = {{ margin: flag ? 100 : 0 }}
>
{props => (
<TouchableWithoutFeedback onPressIn = {() => this.toggle()}>
<AnimatedView style = {{ ...styles, ...props }}>
<Text>{flag ? "true" : 'false'}</Text>
</AnimatedView>
</TouchableWithoutFeedback>
)}
</Spring>
);
}
}
Анимированный.View был всего лишь этапом тестирования, мы не хотели включать все подобные компоненты RN, потому что это раздуло бы конечный пакет. Вы в основном сами расширяете их:
const AnimatedView = animated(View). Импорт также проще:import { Spring, animated } from 'react-spring'