2017-02-27 2 views
0

react-native-elements 라이브러리를 참조하고 해당 확인란 구성 요소를 사용합니다.사용자 지정 구성 요소에 대한 참조 추가

constructor(props) { 
    super(props); 
    this.state = { 
     checked: true 
     titleText1:"Checkbox one" 
     titleText1:"Checkbox two" 
    } 
    } 
    render() 
    { 
    return (
      <View> 
    <CheckBox ref='chk1' checked={this.state.checked} title={this.state.titleText1} /> 
    <CheckBox ref='chk2' checked={this.state.checked} title={this.state.titleText2} onPress={this.manageChkboxes()} /> 
      </View>); 
} 

    manageChkboxes(){ 
    this.state.checked=false 
    this.state.titleText1="Checkbox one updated" 
    this.state.titleText2= "Checkbox two updated" 
    this.refs.chk1.checked= this.state.checked; 
    this.refs.chk1.title= this.state.titleText1; 
    this.refs.chk2.checked= this.state.checked; 
    this.refs.chk2.title= this.state.titleText2; 
    } 

참조를 사용하여 구성 요소 속성을 수정할 수 없습니다. manageChkboxes() 함수를 호출하면 오류가 발생합니다. null is not an object(evaluating 'this.refs.chk1.checked=!1')

답변

1

소품에 액세스하려면 약간 변경해야합니다. 그러나 당신은 또한 직접 상태를 변경하지 않을, 심판에 대한 문자열을 사용하지 않아야합니다, 항상 setState를 사용 또한

constructor(props) { 
    super(props); 
    this.state = { 
     checked: true 
     titleText1:"Checkbox one" 
     titleText1:"Checkbox two" 
    } 
    } 

    manageChkboxes(){ 
    this.setState({ 
    checked: false, 
    titleText1: "Checkbox one updated" 
)}; 
    } 

render(){ 
    return(
    <View> 
     <CheckBox checked={this.state.checked} title={this.state.titleText1} /> 
     <CheckBox checked={this.state.checked} title={this.state.titleText2} onPress={this.manageChkboxes()} /> 
    </View> 
) 
} 
+0

를,이 같은 속성을 변경해서는 안, 당신은 속성의 변수를 가지고 managechkboxes 업데이트를해야하는 변하기 쉬운. (당신은 대부분 새로운 값으로 재 렌더링을하기 위해 state를 사용해야 할 것입니다) –

+0

'undefined가 객체가 아닙니다 (this.chk1.props를 평가하는 것). 제안에 따라 내 질문을 업데이트합니다. – Akki

+0

checkbox 구성 요소를 render()에 반환해야합니다. 그렇지 않으면 렌더링되지 않습니다. 아픈 내 대답을 업데이 트하십시오. –

관련 문제