React native 反应本机动态样式,而不重新渲染整个组件

React native 反应本机动态样式,而不重新渲染整个组件,react-native,stylesheet,React Native,Stylesheet,下面的条件样式是否仍适用于react native style={[styles.base, this.state.active && styles.background]} 安装组件时,激活状态设置为false 屏幕上有一个按钮,用于将活动状态更改为true。然后,我希望显示背景样式。但情况并非如此,除非页面重新加载 有什么想法吗 谢谢听起来您可能对使用react native的动画模块感兴趣。通过使用动画模块,可以使样式发生更改或设置动画。您还可以使用LayoutImati

下面的条件样式是否仍适用于react native

style={[styles.base, this.state.active && styles.background]}
安装组件时,激活状态设置为false

屏幕上有一个按钮,用于将活动状态更改为true。然后,我希望显示背景样式。但情况并非如此,除非页面重新加载

有什么想法吗


谢谢

听起来您可能对使用react native的动画模块感兴趣。通过使用动画模块,可以使样式发生更改或设置动画。您还可以使用LayoutImation。你应该阅读和

您可以从使用LayoutImation开始,看看它是否满足您的需要。设置起来很快

下面是一个例子:

import React, { Component} from 'react';
import { View, LayoutAnimation, UIManager, Platform } from 'react-native';

class MyComponent extends Component {
    constructor(props) {
        super(props);

        if (Platform.OS === 'android') {
            UIManager.setLayoutAnimationEnabledExperimental(true);
        }
    componentWillUpdate() {
        LayoutAnimation.spring() // automatimagically animates style changes
    }
    render() {
        <View style={[styles.base, this.state.active && styles.background]}>
        </View>
    }
}
import React,{Component}来自'React';
从“react native”导入{视图、布局动画、UIManager、平台};
类MyComponent扩展组件{
建造师(道具){
超级(道具);
如果(Platform.OS==='android'){
UIManager.SetLayoutImactionEnabledExperimental(true);
}
componentWillUpdate(){
layoutimation.spring()//自动神奇地设置样式更改的动画
}
render(){
}
}

谢谢。看起来是我需要的。我会尝试一下,让你知道。效果很好。谢谢!刚刚通过在react-native的导入中添加平台编辑了你的答案。哦!我真不敢相信我错过了!:)@sbkl我很高兴它对你有用!如果它对你有帮助,你介意投票并接受答案吗?如果你使用LayoutAnimation,你应该试试动画模块。它需要更多的时间来设置,而且有点复杂,但是它给你更多的控制,让你可以设置样式的动画。