通常,您在StyleSheet.create
之外声明Component
。
但是,我在StyleSheet.create
内添加了render()
以便在某些页面上利用redux state
的优势。
每次重新渲染时,您都将呼叫StyleSheet.create
这是问题吗?
import React, { Component } from 'react';
import { Text, View, StyleSheet,Button } from 'react-native';
import { Constants } from 'expo';
import TestView from './TestView';
const styles = StyleSheet.create({
text:{
fontSize:14,
}
})
const useStateStyles = fontSize => StyleSheet.create({
text:{
fontSize:fontSize,
}
})
export default class App extends Component {
state = {
fontSize:14,
}
render() {
const { fontSize } = this.state;
this.styles = useStateStyles(fontSize);
return (
<View style={{flex:1,marginTop:20}}>
<Button
title="+"
onPress={()=>{this.setState({
fontSize:fontSize+2
})}}
/>
<Button
title="-"
onPress={()=>{this.setState({
fontSize:fontSize-2
})}}
/>
<Text style={styles.text}>{fontSize}</Text>
<Text style={this.styles.text}>{fontSize}</Text>
</View>
);
}
}
如果
StyleSheet.create
是外部的且固定的,则State
更改时将无法更改。因此,在
useStateStyles
中调用render
。https://snack.expo.io/SJOMaiwXH
最佳答案
您不必多次调用style
代码。您可以使用state value
您可以直接在status value
中声明style
。
import React, { Component } from 'react';
import { Text, View, StyleSheet,Button } from 'react-native';
import { Constants } from 'expo';
export default class App extends Component {
constructor(props){
super(props);
this.state = {
fontSize:14,
}
}
render() {
const { fontSize } = this.state;
return (
<View style={{flex:1,marginTop:20}}>
<Button
title="+"
onPress={()=>{this.setState({
fontSize:fontSize+2
})}}
/>
<Button
title="-"
onPress={()=>{this.setState({
fontSize:fontSize-2
})}}
/>
<Text style={{fontSize: this.state.fontSize}}>Test text</Text>
</View>
);
}
}
关于css - 多次调用StyleSheet.create是否会影响性能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57385885/