2017-09-05 9 views
1

이제는 몇 시간 동안 아무런 주사위도없이 이것을 해결하려고 노력했습니다. 스타일 배열을 제외한 모든 것이 작동합니다. 스타일 배열에 매핑 된 배열 객체를 포함하는 방법을 모르십니까?React 스타일 배열 내부에 네이티브 매핑 된 배열 객체가 있습니까?

오류 : Failed prop type: Invalid props.style...

그래서 <Text Style={ 배열 형식이 올바르지 않습니다하지만 난 그것을 변환 할 수있는 올바른 구문을 모른다. 어떤 도움이라도 대단히 감사합니다.

const navTabs = [ {label: 'Home'}, {label: 'Next'} ] 
const { Home, Next } = styles 

{navTabs.map(x => 
<TouchableOpacity key={x.label} onPress={() => navigate(`${x.label}`)}> 
<Text style={ [ navTxt, `${x.label}` ] }> {x.label} </Text> 
</TouchableOpacity>)} 

const styles = { navTxt:{backgroundColor:'#000', paddingHorizontal: 5}, Home:{color: 'red'}, Next:{color: 'white'} } 
+0

왜 스타일이 아닌'x.label'을 사용하고 있습니까? ''는 효과가 있습니다. – Val

+0

@Val 때문에 ''에 적용되는 두 가지 스타일이 있습니다. 일반적으로'style = {[navTxt, Home]}'또는'[navTxt, Next]'배열이지만'const navTabs' navigate 함수를 채우고 레이블 문자열과 스타일 속성을 보간하면 x.label은 .map 함수에서 파생됩니다. @soutot – Max

답변

0

가 나를 위해 이상한 모양 솔직히 말해서,하지만이 당신이

업데이트를 달성하고 싶은 생각 : 당신이 할 수있는 해결 방법이있다,

render() { 
const navTabs = [ 
    { label: 'Home' }, 
    { label: 'Next' }, 
]; 
const styles = { 
    Home: { 
    color: 'rgb(255, 0, 0)', 
    }, 
    Next: { 
    color: 'rgb(0, 0, 0)', 
    }, 
    navTxt: { 
    backgroundColor: 'rgb(0, 255, 0)', 
    }, 
}; 

return (
    {navTabs.map(x => 
      <TouchableOpacity key={x.label} onPress={() => {}}> 
      <Text style={{ ...styles.navTxt, ...styles[x.label] }}> {x.label} </Text> 
      </TouchableOpacity> 
     )} 
); 
} 
을 다음과 같은
+0

[navTxt] 필요성을 식별하는 데 navTxt 스타일도 포함해야합니다. , x.label] 그들은 backgroundColor 등을 기초로 작업합니다 – Max

+0

은 위에서 언급 한 모든 관련 스타일로 질문을 업데이트했습니다 – Max

+0

예! 감사합니다 @ soutot가 작동합니다. 스프레드 연산자, 맞죠? – Max

0

스타일 어레이의 각 요소는 개체 또는 스타일 시트 중 하나이어야한다. 이런 식으로 뭔가 :

style = StyleSheet.create({ navTxt: { color: 'red' } }) 

<Text style={ [ style.navTxt, { label: x.label } ] }> {x.label} </Text> 
+0

에 의해 제공되는 아래의 작업 해결책을 확인하십시오. 오류 : props.style 키가 잘못되었습니다. 텍스트에 제공된 'label' – Max

+0

좋아요, 예를 들어 이것을 썼습니다. 사용 가능한 목록에서 원하는 값을 선택해야합니다 : https://facebook.github.io/react-native/docs/text.html#style – temakozyrev

+0

일부는'fontSize' 또는'fontWeight'입니다. – temakozyrev