将本机集合样式反应为State

时间:2020-01-17 22:31:35

标签: javascript reactjs react-native react-native-android state

我想使用backgroundColor中的style1作为状态,并在函数change()中对其进行更改。
如何访问style1

我的意思是从另一个函数调用函数change,使按钮将其颜色更改为黄色,然后在一段时间后再次将其颜色更改为蓝色。

export default class App extends Component{ 
  constructor (props){
    super(props);
    this.state = {
      //style1.backgroundColour: blue  //? Can't 
    }
    this.change=this.change.bind(this)
  }

  change() {
    this.setState({ style1.backgroundColour: yellow }) //?
  }

  render(){
    return (
      <View style={styles.style1} > </View>

    );
  }
}

const styles = StyleSheet.create({

  style1:{
    padding: 5,
    height: 80,
    width: 80,  
    borderRadius:160,    
    backgroundColor:'blue',
  },

});

1 个答案:

答案 0 :(得分:4)

您可以给样式道具设置一个数组。因此,您可以放置​​其他来源的任何其他样式。

首先,您应该为backgroundColor状态声明一个默认值:

this.state = {
    backgroundColor: 'blue'
}

然后将其状态设置为正常的字符串状态:

this.setState({backgroundColor: 'yellow'});

最后,将其用于样式道具:

style={[styles.style1, {backgroundColor: this.state.backgroundColor}]}



如果要使用对象,而不是字符串作为状态:

export default class App extends Component{ 
  constructor (props){
    super(props);
    this.state = {
      style1: {
        backgroundColor: 'blue'
      }
    }
    this.change=this.change.bind(this)
  }

  change() {
    this.setState({ style1: {...this.state.style1, backgroundColor: 'yellow' } })
  }

  render(){
    return (
      <View style={[styles.style1, this.state.style1]}> </View>

    );
  }
}

const styles = StyleSheet.create({

  style1:{
    padding: 5,
    height: 80,
    width: 80,  
    borderRadius:160,    
    backgroundColor:'blue',
  },

});