2017-02-27 36 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

小道具にアクセスするには、少し変更する必要があります。また、あなたがこのような性質を変えるべきではありません

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更新することが必要です。しかし、あなたはまた、常にSETSTATEを使用し、直接の状態を変更することはありません、レフリーのための文字列を使用しないでください変数。 (ほとんどの場合、新しい値で再描画させるために状態を使う必要があります) –

+0

与えられたエラー 'undefinedはオブジェクトではありません(this.chk1.propsを評価しています)。あなたの提案に応じて私の質問を更新します – Akki

+0

あなたはrender()のチェックボックスコンポーネントを返す必要があります。そうでなければレンダリングされません。私の答えを変えてください。 –

関連する問題