0

내가 얻으려고하는 것은 JSON에서 무엇이 표시되는지에 따라 동적으로 뷰를 추가하는 것입니다. 예를 들어, 하나의 이벤트는 빨간색으로 표시되고 다른 이벤트는 파란색으로 표시 될 수 있습니다. 앱이 이에 따라보기를 삽입해야합니다. 스타일러는 같은 클래스에있는 경우 사전에React Native - 함수에서 스타일 가져 오기 (Android)

class MainPage2 extends Component { 


constructor() { 
super() 
var sleepTime = ["15/07/2016 15:00:00", "15/07/2016 14:20:30"]; 
var minuteDifference = Math.round((((sleepTime[0] - sleepTime[1])/1000)/60)); 

var width = {timeAsleep: 120, timeAwake:60, timeAway:60} 
this.state = { 
    timeAsleep: width.timeAsleep, 
    timeAwake: width.timeAwake, 
    timeAway: width.timeAway, 
    array: [1,2] 
} //set the changeable values, we will get it from Json in our app 
    } styler (num) { 


    if (num == 1) 
    return styles.AsleepStyle; 

    if (num==2) 
    return styles.AwakeStyle; 

    if (num==3) 
    return styles.AwayStyle; 

    return styles.AwayStyle; 
    } 

    render() { 
    const {timeAsleep, timeAwake, timeAway} = this.state 
    let Arr = this.state.array.map((a, i) => { 
return <View key={i} style={this.styler(a)}></View> }); 

    return (
    <ScrollView> 

    <Text>First</Text> 
    <View style={this.styler}/> 
    { Arr } 

    <Text>Second</Text> 
    <TouchableHighlight onPress={() => this._onPressOut() }> 
     <Text>Push</Text> 
    </TouchableHighlight> 

    <View style={styles.viewLayout}> 


    <View style={[styles.bar, styles.AsleepStyle, {width: timeAsleep}]}/> 
    <View style={[styles.bar, styles.AwakeStyle, {width: timeAwake}]}/> 
    <View style={[styles.bar, styles.AwayStyle, {width: timeAway}]}/> 
    </View> 
    </ScrollView> 

    ) }} 

const styles = StyleSheet.create({ 
viewLayout: { 
    flex: 1, flexDirection: 'row',padding:20 
}, 

bar: { 


height: 18 

}, 

AsleepStyle: { 
backgroundColor: '#F55443' 
}, 
AwakeStyle: { 
backgroundColor: '#FCBD24' 
}, 
    AwayStyle: { 
backgroundColor: '#59838B' 
} 
}); 

module.exports = MainPage2; 

덕분에

+0

그것은 당신의 질문에서 정말 분명하지 않다. 더 많은 컨텍스트가 도움이 될 것입니다. 이 함수는 어디에 정의되어 있습니까? –

+0

질문을 편집했습니다. 그리고 모든 코드를 추가했습니다 – Ulasscan

+0

이것을 해결 된 것으로 표시하고 싶습니다. 그렇게하려면 아래에 답변을 추가하고 인접한 눈금을 클릭하십시오. – halfer

답변

0

다음 this.styler를 사용하여 코드가 어떻게 구성되어 있는지

render() { 
    const {timeAsleep, timeAwake, timeAway} = this.state 
    let Arr = this.state.array.map((a, i) => { 
    return <View key={i} style={this.styler(a)}></View> }); 
} 
+0

고마워, 지금은 기능을 볼 수 있지만 여전히 작동하지 않습니다. – Ulasscan

+0

당신은 정교 할 수 있습니까? 작동하지 않는 것은 무엇입니까? 로그에 뭐가 있니? – atlanteh

+0

경고가 있습니다. 실패한 소품 유형 : 예상 '대상'인 '보기'에 '유형'의 '기능'유형이 잘못 공급되었습니다. 보기 – Ulasscan

관련 문제